溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

QT自定義控件消息實(shí)現(xiàn)

發(fā)布時(shí)間:2020-08-19 12:18:02 來源:網(wǎng)絡(luò) 閱讀:635 作者:WZM3558862 欄目:開發(fā)技術(shù)
通過對(duì)一個(gè)已經(jīng)存在的Qt窗口部件進(jìn)行子類化或者直接對(duì)QWidget進(jìn)行子類化,就可以創(chuàng)建自定義窗口部件。以下直接對(duì)已有的Qt窗口部件進(jìn)行子類化:

如下通過對(duì)QLineEdit進(jìn)行子類化來實(shí)現(xiàn)自已需要的窗口部件,參考代碼如下:

/**********************子類化的頭文件*****************************/

#ifndefLINEEDIT_H

#defineLINEEDIT_H

#include<QLineEdit>

#include<QMouseEvent>

classLineEdit:publicQLineEdit

{

    Q_OBJECT

public:

    explicitLineEdit(QObject*parent=0);

   

protected:

    voidmouseDoubleClickEvent(QMouseEvent*);

};

#endif//LINEEDIT_H





/**********************子類化的源文件*****************************/

#include"lineedit.h"

#include<QMessageBox>

LineEdit::LineEdit(QObject*parent)

{

}



//重新實(shí)現(xiàn)QLineEdit類的mouseDoubleClickEvent(QMouseEvent*event)

//事件處理函數(shù),從而達(dá)到雙擊LineEdit的時(shí)候會(huì)有一個(gè)消息框彈出



voidLineEdit::mouseDoubleClickEvent(QMouseEvent*event)

{

    QMessageBox::information(this,tr("提示"),tr("你是對(duì)的!"));

    event->ignore();

}



以上是我自己實(shí)現(xiàn)的自己的一個(gè)LineEdit類,我雙擊這個(gè)LineEdit控件,就會(huì)彈出個(gè)消息框出來。



首先建一個(gè)工程,把上面的兩個(gè)文件放到工程目錄下面,然后來實(shí)現(xiàn)自己的代碼:



/**********************主窗口的頭文件*****************************/

#ifndefMYWIDGET_H

#defineMYWIDGET_H

#include<QWidget>

#include"lineedit.h"

classMyWidget:publicQWidget

{

    Q_OBJECT

public:

    explicitMyWidget(QWidget*parent=0);

private:

    LineEdit*lineedit;

};

#endif//MYWIDGET_H



/**********************主窗口的源文件*****************************/



#include"mywidget.h"

#include<QHBoxLayout>

MyWidget::MyWidget(QWidget*parent):

    QWidget(parent)

{

    lineedit=newLineEdit;

    QHBoxLayout*hlayout=newQHBoxLayout;

    hlayout->addWidget(lineedit);

    setLayout(hlayout);

}





/**********************顯示主窗口的源文件*****************************/



#include<QApplication>

#include<QTextCodec>

#include"mywidget.h"

intmain(intargc,char*argv[])

{

    QApplicationapp(argc,argv);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

    MyWidget*mywidget=newMyWidget;

    mywidget->show();

    returnapp.exec();

}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI