c++ - qt图形界面连接

标签 c++ user-interface qt

我刚刚开始使用 QT。我已经阅读了一些教程,我认为我对信号和槽有了一定的了解。我正在编写一个 GUI,它有各种按钮可以改变我的主程序的状态。因此,例如在绘图应用程序中,您会选择不同的绘图工具(使用各种按钮)。

解决此问题的最佳方法是什么?我的第一个想法是尝试将 PushButton 的点击信号连接到某个设置 current_tool 变量的函数。我进行了一些搜索,但找不到将 QObject 信号连接到常规函数的方法。

这使我相信可能存在不同的方法。我在其中创建了一个具有各种 GUI 属性的新 QObject(我自己的扩展)。然后我会在这里为各种按钮定义我的插槽。

在 QT 中执行此操作的最佳方法是什么。我是新手,不知道首选做法。

任何信息都会有用, 谢谢

最佳答案

您可以将这些“普通函数”定义为插槽。插槽只是 normal functions也可以通过信号调用:

class ToolSelector : public QObject {
  Q_OBJECT

public:
  Tool *selected;

public slots:
  void selectBrush();
  void selectPen();
  void selectFill();
};

ToolSelector::selectBrush() {
  delete selected;
  selected = new Brush();
}

ToolSelector::selectPen() {
  // ...
}

// ...

toolsel = new ToolSelector();
brushButton = new QPushButton();
connect(brushButton, SIGNAL(clicked()), toolsel, SLOT(selectBrush()));

关于c++ - qt图形界面连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1447272/

相关文章:

qt - 如何在 QGridLayout 中获取小部件的行/列位置?

c++ - 我如何将 Qt 的 QVariant 转换为 boost::any?

c++ - 连接 qradiobutton 和 qtab 小部件时出现问题

jquery - 你能在 jQuery 中只淡入一个类的背景 css 吗?

java - setSize() 与 setPreferredSize() 和 pack()

c++ - 为什么更改 'camera' 的 Z 位置不会显示图元?

C++文件IO和分隔符拆分

java - 单击按钮后关闭 JFrame Java

c++ - 如果用户没有输入数据,我如何重新定位光标?

c++ - 如何创建资源 dll