Qt가 5.6이고 버튼 마녀의 눌린 신호를 사용하고 있습니다. 그러면 대화 상자가 나타납니다. 불행하게도 대화 상자의 버튼은 처음 클릭되지 않지만 두 번째 클릭은 완벽하게 작동합니다. 슬롯에 QMessageBox::information
을 표시하여이 상황을 테스트 할 수 있습니다.첫 번째 클릭시 QPushButton을 클릭하지 않았습니다.
답변
죄송합니다. 재생산 할 수 없습니다. 저에게 효과적입니다. 그리고 이이 테스트 케이스를 작성 했어야합니다. 문제를 설명하는 것보다 코드를 작성하는 것이 더 적은 단어입니다. 여담으로
#include <QtWidgets>
int main(int argc, char ** argv) {
QApplication app{argc, argv};
QPushButton button{"Press me"};
button.setMinimumSize(300, 150);
button.setFont(QFont{"Helvetica", 20});
QObject::connect(&button, &QPushButton::pressed, [&]{
QMessageBox::information(&button, "Yes!", "You pressed me.");
});
button.show();
app.exec();
}
, 당신은
clicked()
신호가 아닌
pressed()
신호를 사용한다. 사용성은 후자를 사용하는 경우에 어려움이 있습니다.
답장을 보내 주셔서 감사합니다. 하지만 상황을 잘 설명하지 못했을 수도 있습니다. 문제는 푸시 버튼 '버튼'자체가 아니라 대화 상자의 푸시 버튼입니다. 예를 들어 'QMesageBox'의 OK 버튼을 누릅니다. 확인 버튼을 두 번 눌러 정보 대화 상자를 닫아야합니다. 도와 줘서 고마워. –
위의 테스트 케이스를 실행 해 보셨습니까? 그것은 잘 작동합니다! –
죄송합니다. Windows에서 문제가 없습니다. 하지만 비글 뼈가 검은 색과 터치 스크린이 문제가 있습니다. Qt 버전 5.6, 도구 체인 linaro 4.9, 우분투 크로스 컴파일 16.04. 나는 이벤트가 Qt 이벤트 핸들러에서 처음으로 처리되지 않는다고 생각한다. –
어떤 신호에 연결 하시겠습니까? [클릭] (http://doc.qt.io/qt-4.8/qabstractbutton.html#clicked) 또는 [pressed] (http://doc.qt.io/qt -4.8/qabstractbutton.html # pressed)? – mvidelgauz
질문에 ** ** 프레스 ** 신호에 언급되어 있습니다. –
마우스 버튼을 눌렀을 때 대화 상자가 열리게되어 예상대로 작동했습니다 ... 그리고 위젯 프로젝트를 만들고 디자이너에 푸시 버튼을 추가 한 다음 "슬롯으로 이동 ...": void MainWindow : : on_pushButton_pressed() {QMessageBox :: information (this, "INFO", "Text ...", QMessageBox :: Ok); }' – hyde