Название: Обработка события кнопки в динамически созданной вкладке. Отправлено: Deusex25 от Июль 20, 2016, 13:38 Доброго времени дня всем.
Есть следующая задача: Приложение с центральным виджетом вкладки (QTabWidget) в котором, в зависимости от выбранных настроек, к постоянным добавляются / убираются динамические вкладки. В каждой вновь созданной вкладке необходимо наличие кнопки (QToolButton) для выбора и загрузки файла с данными для обработки. Проблема: Кнопка, созданная в такой вкладке не работает. При запуске приложения появляется ошибка (ещё до создания новой вкладки): QMetaObject::connectSlotsByName: No matching signal for on_tbltoolButton_clicked() Если кнопка находится в статической вкладке, то проблем нет и всё пашет на ура! Вот кусок кода, вызываемого событием: void MainWindow::on_tbltoolButton_clicked() { QString fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) loadFile(fileName); } Код для кнопки: QToolButton *toolButton; - в описании класса, в заголовочнике. tbltoolbutton = new QToolButton(Direction_0); tbltoolbutton->setObjectName(QStringLiteral("tbltoolbutton")); tbltoolbutton->setGeometry(430, 30, 80, 30); tbltoolbutton->setText(QApplication::translate("Rotation3D", "...", 0)); Direction_0 - динамически созданная вкладка. Я с С++ и Qt новичок. Буду рад любой помощи. Название: Re: Обработка события кнопки в динамически созданной вкладке. Отправлено: Kurles от Июль 20, 2016, 14:29 переименуй on_tbltoolButton_clicked в onTbltoolButton_clicked, что бы автоматического связывания не происходило и при создании кнопки соединяй сигнал clicked с onTbltoolButton_clicked вручную:
Код
Название: Re: Обработка события кнопки в динамически созданной вкладке. Отправлено: Bepec от Июль 20, 2016, 14:54 Когда ты пишешь on_NameObject_clicked, то при загрузке происходит попытка автоматического соединения сигнала clicked объекта NameObject с данным слотом. На момент создания формы, кнопки у тебя нет, потому и связывать нечего.
Способ, описанный тебе Kurles правильный. Название: Re: Обработка события кнопки в динамически созданной вкладке. Отправлено: vipet от Июль 20, 2016, 20:13 Когда ты пишешь on_NameObject_clicked, то при загрузке происходит попытка автоматического соединения сигнала clicked объекта NameObject с данным слотом. На момент создания формы, кнопки у тебя нет, потому и связывать нечего. Способ, описанный тебе Kurles правильный. А еще после создания можно вызвать QMetaObject::connectSlotsByName(this) и не надо вручную писать коннекты |