1

我有

class MainWindow : public QMainWindow  { 

    Q_OBJECT

  public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

  private slots:
    void getData();

  private:
    Ui::MainWindow *ui;
    Dialog  *second;
};

class Dialog: public QDialog  {
   Q_OBJECT

  public:
    explicit Dialog(QWidget *parent = 0); QDialog * dialog;

    QPushButton *pushButton;
    QPushButton *pushButton_2;

};

我可以将 Dialog 类中的按钮与 MainWindow 类中的函数 getData() 连接起来(Dialog 是 Mainwindow 类的子类)

我试过了

connect(*second->pushButton, SIGNAL(clicked()), this,
                             SLOT(getData()));

但我得到了

error: no matching function for call to
‘MainWindow::connect(QPushButton&, const char [11], MainWindow* const, const char [11])’

我如何连接它们?

4

1 回答 1

0

如果对话框是 QMainWindow 子类的子类(因为它会),你应该有类似的东西:

MainWindow::MainWindow(...)
{
  ....

  m_dialog = new Dialog(this);// in .h file it is defined as: "Dialog *m_dialog;"
  ....

  connect(m_dialog->pushButton, SIGNAL(clicked()), this,SLOT(getData()));
}

你不必写:

  connect(*m_dialog->pushButton, SIGNAL(clicked()), this,SLOT(getData()));

看看这个qt代码:

Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)),
                 &b, SLOT(setValue(int)));

a.setValue(12);     // a.value() == 12, b.value() == 12
b.setValue(48);     // a.value() == 12, b.value() == 48

如您所见,您必须使用指针而不是 QObject。

于 2012-10-16T15:45:25.740 回答