Qt按钮分配命令

时间:2012-08-21 09:18:10

标签: qt qpushbutton

我正在使用qt creator为vtk aplication创建一个gui。

我做了一个#define动作,我想将该命令分配给QPushButton。

如果按下该按钮如何重现我的定义?

例子。 UI-> pushButton-> ...

2 个答案:

答案 0 :(得分:3)

简单的方法是为按钮定义默认的响应槽。在您的类定义(定义pushButton的同一个类)中,您只需在slots部分下创建一个默认插槽。

class MyMainApplication : public QMainWindow
{
  Q_OBJECT

  public:
    MyMainApplication(QWidget *parent = 0);
    ~MyMainApplication();

   // More stuff in the public section (...)

  public slots:
    void on_pushButton_clicked();    // This is the important line

  // The remaining definitions in your class
};

现在您只需在类实现中编写on_pushButton_clicked()函数,它将响应点击pushButton按钮的点击。

默认广告位的语法为on_NAMEOFTHEWIDGET_NAMEOFTHESIGNAL

使用默认插槽,将自动建立连接。如果要为插槽使用通用名称,则必须手动建立连接。例如,说而不是 on_pushButton_clicked()您要使用mySlot()。在类定义中,您可以键入

(...)
public slots:
  void mySlot();
(...)

并且在类实现中,可能在构造函数中,在ui->setupUi(this);命令之后,您将连接按钮和插槽:

connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(mySlot()));

最后一句话:在这种特殊情况下,我几乎可以确定插槽也可以是private

答案 1 :(得分:2)

您需要使用名为Signals and Slots的Qt功能。许多物体在与之交互时可以发送信号。示例是从QPushButton发出的“clicked()”信号,或点击QAction时发出的“triggered()”。

主要思想是将信号连接到插槽。插槽是在发出信号时调用的函数。我可以为您提供一个PyQt示例:

QtCore.QObject.connect(self.ui.myButton, QtCore.SIGNAL("clicked()"), self.someFunction)

C ++代码不应该有太大的不同。查看Qt示例,它们提供了很多好东西。