QDockWidget * dock2 = new QDockWidget(this);
QDockWidget * myWidget2 = new QDockWidget;
dock2->setWidget(myWidget2);
this->addDockWidget(Qt::LeftDockWidgetArea, dock2);
QPushButton* btn = new QPushButton(this);
btn->setText(tr("something"));
btn->move(600, 600);
btn->show();
connect(btn,&QAction::triggered,this,dock2->hide());
最后一行報錯: error: invalid use of void expression
connect(btn,&QAction::triggered,this,dock2->hide())
求大神指點!!!!
uj5u.com熱心網友回復:
QDockWidget * dock2 = new QDockWidget(this);QWidget* widget= new QWidget;
dock2->setWidget(widget);
……………………
connect(btn, &QPushButton::clicked, dock2, &QWidget::hide);
uj5u.com熱心網友回復:
dock2->hide()改為dock->hide, 不要加括號uj5u.com熱心網友回復:
connect中的回應函式沒見過你那樣寫的。connect(btn,&QAction::triggered,this,dockHide())
void dockHide()
{
dock2->hide();
}
uj5u.com熱心網友回復:
改為dock->hide,uj5u.com熱心網友回復:
connect(btn,&QAction::triggered,this,dock2->hide());改為
connect(btn,&QAction::triggered,dock,&QDockWidet::hide);
uj5u.com熱心網友回復:
qpushbutton 對應的訊息也要改成qpushbutton自己有的信號才行,你這個錯的太多了,建議先看一下qt的信號槽機制相關的幫助檔案
uj5u.com熱心網友回復:
connect(btn,&QAction::triggered,this,dock2->hide())你們對信號槽的理解根本上有問題啊!
class QPushButton根本就沒有triggered這個信號,你硬要給btn放一個class QAction的信號合適嗎?
其次,this,也就是你自己定義這個類實體我猜應該是繼承自QMainWindow,應該是有hide這個slot函式,因為基類來自QWidget。但是你Slot函式放一個dock2->hide()是幾個意思啊?
你要么這么連接
connect(btn,SIGNAL(clicked()), dock2, SLOT(hide()));
至于為什么我改成SIGNAL這種宏方式,而不是用函式指標方式,你們可以去看看技術檔案。這兩種方式的差異,劃重點:對信號槽的引數匹配限制
uj5u.com熱心網友回復:
button對應的是&QPushButton::released,,,,action對應的是&QAction::triggered,轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/70964.html
標籤:Qt
上一篇:用HBuilder打包VUE專案成APP得一些問題求大佬指導一下。
下一篇:修復SM-P355C平板
