c++ - 在 Qt 项目、Visual Studio 中添加按钮单击处理程序

标签 c++ windows qt

我有在 VS2008 中工作的 Qt SDK 和 Visual Studio Qt 插件。我用主窗口类 MainWindow 创建了 Qt UI 项目。双击 mainwindow.ui 打开 Qt Designer。然后我在窗口中添加了按钮,并将其命名为 pushButton。在 Signals-Slots 模式下,我设法将按钮的点击信号与 MainWindow ButtonClicked 插槽连接起来。信号/槽编辑器如下所示:

Sender   pushButton
Signal   clicked()
Receiver MainWindowClass
Slot     ButtonClicked()

mainwindow.ui 文件已更改,以反射(reflect)此新信息。但是,mainwindow.cpp 和 mainwindow.h 保持不变。我希望看到可以添加自己的代码的地方。所以,我手动添加了这段代码:

// mainwindow.h
...
protected slots:
    void ButtonClicked();

// mainwindow.cpp
void MainWindow::ButtonClicked()
{
    QMessageBox msgBox;
    msgBox.setText("Clicked");
    msgBox.exec();
}

它有效,但我想知道这是否是执行此操作的正确方法。插槽声明和实现是否应该手动添加,或者我遗漏了什么?

最佳答案

如果您使用信号/槽编辑器,您必须手动添加这些代码。如果您双击设计器中的按钮,旧的 Qt 插件会自动添加这些。现在 Qt Designer 是一个独立的应用程序。无法双击。

您也可以使用 automatic connections .使用自动连接,您不需要将信号与槽连接。具有特殊命名约定的函数,自动调用。比如 on_okButton_clicked

关于c++ - 在 Qt 项目、Visual Studio 中添加按钮单击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091748/

相关文章:

c++ - 尝试使用 mingw32-make 命令静态编译 Qt 应用程序,但使用 #include 语句时出错

c++ - 如何将paraview源码编译成Qt工程(.pro)?

c++ - 复制构造函数不起作用?

python - 在 Cygwin 上安装 Python 3.0

regex - 使用 Regex 重命名文件名并使用 powershell 删除之后的所有内容

windows - 为什么在 Windows Vista x64 上调用 GlobalMemoryStatus 时可用物理内存 (dwAvailPhys) > 可用虚拟内存 (dwAvailVirtual)

c++ - 为什么Clang和MSVC不喜欢带有多余括号的成员typedef声明?

c++ - 什么是 'required from here' 错误

c++ - 带有 if 语句的字符串

c++ - MyClass::metaobject VS2005 的 Qt 链接问题