我刚刚开始使用QT。我已经阅读了一些教程,我想我对信号和插槽有所了解。我正在编写一个GUI,它有各种按钮可以改变我主程序的状态。因此,例如在绘图应用程序中,您将选择不同的绘图工具(使用各种按钮)。
最好的方法是什么?我的第一个想法是尝试将PushButton的单击信号连接到设置current_tool变量的某个函数。我做了一些搜索,找不到将QObject信号连接到常规函数的方法。
这让我相信可能有不同的方法。我在其中创建一个具有各种GUI属性的新QObject(我自己的扩展)。然后我会在这里为各种按钮定义我的插槽。
在QT中执行此操作的最佳方式是什么?我是新人,不知道首选做法。
任何信息都会有用, 感谢
答案 0 :(得分:1)
您可以将这些“普通功能”定义为插槽。插槽只是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()));
答案 1 :(得分:0)
继承uic生成的类,创建一个MyAppWindow类。在该类中提供额外的METHOD,以及Document或Drawing对象。将这些方法连接到您感兴趣的信号,并更改包含绘图状态的成员变量。