程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> qt-QT中點擊右上角紅叉調用的函數

qt-QT中點擊右上角紅叉調用的函數

編輯:編程綜合問答
QT中點擊右上角紅叉調用的函數

我查閱資料知道了QT中點擊右上紅叉調用的是QWidget類下的closeEvent函數
但是我現在想重寫 比如點擊時,讓ui中的某個label顯示的內容改變
但是裡面不能直接調用ui->QLabel 請問怎麼實現這一點啊~

最佳回答:


假設要顯示叉叉的那個按鈕類名叫CLabel
class CLabel : public QLabel
{
Q_OBJECT
public:
CLabel(QWidget *parent = 0){}

signals:
void mousePress();

protect:
void mousePressEvent(QMouseEvent *){
//假設你要把這個CLabel背景改成紅色,這也是你說的“讓ui中的某個label顯示的內容改變”吧
setStyleSheet("background-color: red");
//如果還不夠過瘾,再發個信號出去給別的控件
emit mousePress();
}
};

在你代碼的某處
...
CLabel *m_cLabel = new CLabel(this);
DLabel *m_dLabel = new DLabel(this);
connect(m_cLabel, SIGNAL(mousePress()), m_dLabel, SLOT(deleteLater())); //這樣你那個CLabel點擊的時候就能對另外的ui裡的部件做操作啦,就比如這裡的deleteLater
//或者你不想那麼狠,那就把m_dLabel的背景改成黃色吧
connect(m_cLabel, &CLabel::mousePress, [=]{
//這種connect的寫法前提是你用的qt版本大於5.0並且在pro文件中加入了c++ 11的支持啦
m_dLabel.setStyleSheet("background-color: yellow");
});
(這段代碼我沒有測試,自己玩玩吧,應該是你說的那個意思了,畢竟你所說的紅叉在哪我是摳爛了這個網頁也沒有找到啊)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved