У меня Qt 5.6, и я использую нажатый сигнал кнопки, затем показывает диалог. К сожалению, кнопка диалога не нажата в первый раз, но второй щелчок работает отлично. , вы можете проверить эту ситуацию, указав QMessageBox::information
в слот on_someButton_pressed
.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». Чтобы закрыть диалоговое окно информации, дважды нажмите кнопку ОК. В очередной раз благодарим за помощь. –
Вы запустили тестовый пример выше? Он работает отлично! –
Извините, но у меня нет никаких проблем с этим в Windows. Но в кости бигльной черной и сенсорный экран у меня есть эта проблема. Qt версии 5.6, инструментальная цепочка linaro 4.9, кросс-компиляция из Ubuntu 16.04. Я думаю, что событие не обрабатывается в обработчике событий Qt в первый раз. –
Какой сигнал вы подключаете к - [щелкнул] (http://doc.qt.io/qt-4.8/qabstractbutton.html#clicked) или [нажал] (http://doc.qt.io/qt -4.8/qabstractbutton.html # нажата)? – mvidelgauz
как я упомянул в вопросе о его ** нажатом ** сигнале. –
Работал для меня точно так, как ожидалось, открытие диалога при нажатии кнопки мыши вниз ... И все, что я делал, это создать проект виджета, добавить кнопку в конструкторе, затем «Перейти в слот ...»: 'void MainWindow: : on_pushButton_pressed() {QMessageBox :: информация (это, «INFO», «Text ...», QMessageBox :: Ok); } ' – hyde