新手在这里,我在一个主窗口中放置了一个停靠小部件,这个停靠小部件面板中有一个按钮,现在我想连接,这个按钮带有在主窗口中定义的功能,它抛出了一个错误,我该怎么办?感谢
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)中的工具栏按钮连接,效果很好。
答案 0 :(得分:1)
这是因为您的dock类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
);