Сигналы и слоты с Qtoolbutton - PullRequest
2 голосов
/ 18 ноября 2010

Я создал ToolButton с моим дизайнером qt, и я пытаюсь подключить его к слоту. Я написал это

connect(ui->toolButton_addfiles, SIGNAL(triggered()), this, SLOT(changeDirectory()));

Я в состоянии запустить программу, но когда я нажимаю кнопку, я вижу следующий лог в мой вывод приложения qt:

   Object::connect: No such signal QToolButton::triggered() in ../RightDoneIt/rightdoneit.cpp:10
    Object::connect:  (sender name:   'toolButton_addfiles')
    Object::connect:  (receiver name: 'RightDoneIt')
  • Если я изменю toolButton_addfile на какое-то действие, например (actionChange_addfile), оно будет работать нормально.

Как я могу заставить это соединение работать?

Ответы [ 3 ]

4 голосов
/ 18 ноября 2010

Как говорит ошибка, в QToolButton.

нет сигнала triggered(), но triggered(QAction*).

Редактировать В функции соединения вы должны иметь сигнатуру сигнала, такую ​​как triggered(QAction*), поскольку класс QToolButton не имеет сигнала triggered() (без параметра), объявленный

Удалить, как объяснить в комментариях: Если вы хотите, чтобы это соединение работало, вам нужно предоставить слот, который принимает указатель QAction в качестве параметра. Если вы не можете этого сделать, попробуйте с сигналом clicked.

2 голосов
/ 18 ноября 2010

Вы можете использовать процесс автоматического подключения Qt.

В классе, ссылающемся на ваш пользовательский интерфейс, создать слот с именем:

on_toolButton_addfiles_clicked ();

Пример

См .: Диалог с автоматическим подключением

class ImageDialog : public QDialog, private Ui::ImageDialog
{
    Q_OBJECT

public:
    ImageDialog(QWidget *parent = 0);

private slots:
    void on_okButton_clicked();
};

Надеюсь, это поможет!

Редактировать: Нет сработало сигналовв qAbstractButton.Смотри http://doc.qt.nokia.com/4.7/qabstractbutton.html

0 голосов
/ 18 ноября 2010

Я предполагаю, что вы создаете QAction, добавляете его в QToolButton и пытаетесь подключить его к слоту вашего собственного класса?

Вы можете подключить свой слот к любому QToolButton :: triggered(QAction *) или непосредственно к сигналу QAction :: triggered ().В любом случае, QAction должен быть добавлен к QToolButton через QWidget :: addAction (QAction *), сигнатура метода слота должна соответствовать сигнатуре сигнала, а вызов соединения должен включать параметры сигнала / слота, а не только имена сигналаи слот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...