Недоступная загадка QPushButton - PullRequest
0 голосов
/ 16 июня 2011

У меня есть приложение QT. Он имеет функционирующие кнопки QPushButtons, которые связаны со слотами в моей программе. Я сейчас пытаюсь добавить новую кнопку myNewButton, но где-то как-то не регистрируется.

Для существующей, работающей кнопки myExistingButton У меня есть строка:

connect(ui->myExistingButton, SIGNAL(clicked()), this, SLOT(Foo()));

Я не могу просто добавить строку:

connect(ui->myNewButton, SIGNAL(clicked()), this, SLOT(Foo()));

Ошибка компиляции:

class UI::Viewer has no member named 'myNewButton'

И QT Creator не перечисляет кнопку как параметр автозаполнения для ui-> (то есть я не просто неправильно написал имя). Записи для myExistingButton и myNewButton идентичны, кроме координат и именования в файле пользовательского интерфейса. Что может быть причиной этой проблемы?

Ответы [ 4 ]

1 голос
/ 20 июня 2011

Я вижу, вы решили свою проблему, удалив ui_viewer.h.Но более чистый способ - запустить qMake (из меню Build).Я всегда делаю это, когда получаю ошибки, подобные вашей - иногда Qt Creator забывает запустить qMake, когда это необходимо.

1 голос
/ 16 июня 2011

Полагаю, вы добавили новую кнопку в форму .ui и назвали ее myNewButton, верно?Если это так, это может быть проблемой синхронизации в Qt Creator.Вы пытались сохранить все и пересобрать (только чтобы убедиться, что компилятор пользовательского интерфейса запущен) вашего приложения?

1 голос
/ 16 июня 2011

Правильно ли вы установили родительское свойство виджетов?

Либо при создании , либо , явно указав его .

edit: Также обратите внимание, что

  • Вы не должны редактировать ui_-include напрямую, вместо этого используйте редактор форм
  • вам не нужно делать явные соединения для вещей, которые жестко объявлены в вашей форме; для этого снова используйте редактор форм (щелкните правой кнопкой мыши на кнопке)
0 голосов
/ 16 июня 2011

Я исправил это, удалив сгенерированный файл ui_viewer.h и , а затем перестроив.

...