2016-08-25 11 views
-2

У меня Qt 5.6, и я использую нажатый сигнал кнопки, затем показывает диалог. К сожалению, кнопка диалога не нажата в первый раз, но второй щелчок работает отлично. , вы можете проверить эту ситуацию, указав QMessageBox::information в слот on_someButton_pressed.QPushButton не нажимает на первый клик

+0

Какой сигнал вы подключаете к - [щелкнул] (http://doc.qt.io/qt-4.8/qabstractbutton.html#clicked) или [нажал] (http://doc.qt.io/qt -4.8/qabstractbutton.html # нажата)? – mvidelgauz

+0

как я упомянул в вопросе о его ** нажатом ** сигнале. –

+1

Работал для меня точно так, как ожидалось, открытие диалога при нажатии кнопки мыши вниз ... И все, что я делал, это создать проект виджета, добавить кнопку в конструкторе, затем «Перейти в слот ...»: 'void MainWindow: : on_pushButton_pressed() {QMessageBox :: информация (это, «INFO», «Text ...», QMessageBox :: Ok); } ' – hyde

ответ

0

Извините, не могу воспроизвести: работает для меня. И вам должен был написать этот тестовый пример. Это почти меньше слов, чтобы закодировать его, чем описывать проблему.

#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() сигнала. Юзабилити страдает, если вы используете последний.

+0

Спасибо за ответ. Но, возможно, я не очень хорошо объяснил ситуацию. Проблема заключается не в самой кнопке «кнопка», а в диалоговом окне. Например, кнопка ОК в «QMesageBox». Чтобы закрыть диалоговое окно информации, дважды нажмите кнопку ОК. В очередной раз благодарим за помощь. –

+0

Вы запустили тестовый пример выше? Он работает отлично! –

+0

Извините, но у меня нет никаких проблем с этим в Windows. Но в кости бигльной черной и сенсорный экран у меня есть эта проблема. Qt версии 5.6, инструментальная цепочка linaro 4.9, кросс-компиляция из Ubuntu 16.04. Я думаю, что событие не обрабатывается в обработчике событий Qt в первый раз. –