实际运行QtCreator创建的QActions时遇到问题。要运行,例如actionSystemSettings,我已经向MainWindows添加了插槽,所以它看起来像这样:
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_menuWork_actionSystemSettings();
private:
Ui::MainWindow *ui;
};
而且:
void MainWindow::on_menuWork_actionSystemSettings() {
qDebug() << "Yay!";
}
提示:
QMetaObject :: connectSlotsByName:没有匹配的信号 on_menuWork_actionSystemSettings()
我想这是一个愚蠢的错误,我只是忘记了一些事情,但阅读文档却没有给我什么。我没有“转到插槽”菜单条目应该自动创建一些模板...至少Visual Studio for C#做到了。
答案 0 :(得分:1)
当您定义插槽时,正确的方法是:
on_<widget_name>_<signal>
例如,如果你必须命名你的插槽
private slots:
on_actionSystemSettings_triggered();
答案 1 :(得分:0)
根据QMetaObject::connectSlotsByName()
的文档:
以递归方式搜索给定对象的所有子对象,以及 将来自它们的匹配信号连接到跟随的对象的插槽 以下表格:
void on_object-name_signal-name(signal-parameters);
所以,我认为你的插槽应该有以下签名:
void MainWindow::on_actionSystemSettings_triggered()
{
//
}