1

新手,我在主窗口放了一个dock小部件,这个dock小部件面板中有一个按钮,现在我想连接,这个按钮在主窗口中定义了一个功能,它抛出了一个错误,我该怎么办做?谢谢

connect
(
    perfectPanel_->btn_AAA,
    SIGNAL(clicked()),
    this,
    SLOT(on_actionAAA_triggered()),
    Qt::UniqueConnection
);

错误信息是

$PWD/ui_perfectPanel.h: In constructor ‘xixi::xixi()’:
$PWD/ui_perfectPanel.h:71:18: error: ‘QPushButton* Ui_perfectPanel::btn_AAA’ is inaccessible
$PWD/xixi/xixi.cpp:51:25: error: within this context

请注意,我已经设法将它与主窗口(xixi.cpp)中的工具栏按钮连接起来,效果很好。

4

1 回答 1

1

发生这种情况是因为您的停靠类perfectPanel从生成的 ui 类私下继承Ui::perfectPanel

class perfectPanel : public QWidget, private Ui::perfectPanel

您可以公开该继承,但不应该。相反,您应该将信号作为perfectPanel类的一部分,并将内部信号从按钮路由到该外部信号:

class perfectPanel ... {
...
signals:
    void AAA_clicked();
};

perfectPanel::perfectPanel() {
     setupUi(this);
     connect(btn_AAA, SIGNAL(clicked()), this, SIGNAL(AAA_clicked()));
}

(如果您会问,是的,您可以将 2 个信号连接在一起)。

然后,您只需在主窗口类中连接新信号:

connect(perfectPanel_, 
    SIGNAL(AAA_clicked()), 
    this,
    SLOT(on_actionAAA_triggered()),
    Qt::UniqueConnection
);
于 2013-01-04T01:02:08.397 回答