QT多重继承带来的问题及解决办法,记录备查

多重继承connect时编译通不过。

网上很多办法是将QObject作为第一继承,确实可以解决一些问题。

但,这又会带来新问题,ui里设置的stylesheet或在代码里使用setStyleSheet不会生效——除非对单个widget使用setStyleSheet

m_pLabel_title_main->setStyleSheet("font-size:16px;font-weight:bold;color:white;font-family:\"Microsoft YaHei\";");        //可以
m_pFrame_container_main_title->setStyleSheet("background-color:rgb(0,100,177);");                                                     //可以

这样就不可以:

【this->】setStyleSheet("\

QLabel[objectName^=\"label_title_\"]{\
font-weight:bold;\
color:red;\
}");

 

如果不考虑使用ui设计器里使用stylesheet,可以直接“将QObject作为第一继承”


QObject::connect(ui.pushButton_2, &QPushButton::clicked, this, &Dialog_exam_ready::on_btn_exit_clicked);

 

如果希望使用批量stylesheet,可以这样做:

class Dialog_exam_ready : /*public QObject,*/ public QDialog, public ITcpClient

QDialog* pThis = this;
QObject::connect(ui.pushButton_2, &QPushButton::clicked, pThis, [&]() {on_btn_exit_clicked(); });

 

**第3、4参数     不能:       this, &Dialog_exam_ready::on_btn_exit_clicked

 

posted @ 2023-05-08 22:42  吾非无心  阅读(431)  评论(0编辑  收藏  举报