国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

QT新手筆記01

ivyzhang / 3570人閱讀

摘要:自定義控件方法第一步創(chuàng)建一個(gè)基類(lèi)為勾選第二步在界面中創(chuàng)建所需控件第三步在這個(gè)中點(diǎn)擊名添加新文件添加一個(gè)繼承第四步在這個(gè)的中拖一個(gè)控件然后選擇右鍵提升輸入第一個(gè)的類(lèi)名第五步關(guān)聯(lián)第一個(gè)類(lèi)中的控件之間的聯(lián)系例子片段拓展在第一個(gè)創(chuàng)建的自定

QT自定義控件

方法:

  第一步 創(chuàng)建一個(gè)QTProject,基類(lèi)為QWidget(勾選ui);
  第二步 在.ui界面中創(chuàng)建所需控件;
  第三步 在這個(gè)Project中點(diǎn)擊Project名添加新文件, 添加一個(gè)C++ class,繼承QWidget;
  第四步 在這個(gè)的.ui中拖一個(gè)Widget控件,然后選擇Widget右鍵提升,輸入第一個(gè)的類(lèi)名;
  第五步 關(guān)聯(lián)第一個(gè)類(lèi)中的控件之間的聯(lián)系.

例子:horizintalSlider and spinbox

api(片段):

 setRange(0,100)
 connect(ui->horizontalSlider,&QSlider::valueChanged,[=](int value){
 ui->spinBox->setValue(value);
 connect(ui->spinBox,
 static_cast(&QSpinBox::valueChanged),
 ui->horizontalSlider,&QSlider::setValue);

拓展:

set two PushButtons and one can get the value of the horizontalSlider, 
the another one can set the value of the horizontalSlider.

Mind:

在第一個(gè)創(chuàng)建的自定義Widget中給出2個(gè)函數(shù), int get_value()----the first PushButton和void set_value(int value)---
the second PushButton, 最后通過(guò)按鈕的槽函數(shù)就可以實(shí)現(xiàn)了.

常用事件處理

方法: 在所有組件的父類(lèi) QWidget 中,定義了很多事件處理的函數(shù),如
? keyPressEvent():鍵盤(pán)按鍵按下事件
? keyReleaseEvent():鍵盤(pán)按鍵松開(kāi)事件
? mouseDoubleClickEvent():鼠標(biāo)雙擊事件
? mouseMoveEvent():鼠標(biāo)移動(dòng)事件
? mousePressEvent():鼠標(biāo)按鍵按下事件
? mouseReleaseEvent() : 鼠標(biāo)按鍵松開(kāi)事件
? 等等
這些函數(shù)都是 protected virtual 的,也就是說(shuō),我們可以在子類(lèi)中重新實(shí)
現(xiàn)這些函數(shù)。

例子:

  第一步 創(chuàng)建一個(gè)QTProject,基類(lèi)為QWidget(勾選ui);
  第二步 在.ui中拖一個(gè)Label的控件;
  第三步 在這個(gè)Project中點(diǎn)擊Project名添加新文件, 添加一個(gè)C++ class,繼承QLabel;
  第四步 把窗口的Label控件提升為第三步創(chuàng)建的類(lèi);
  第五步 在新建類(lèi)中重寫(xiě)方法中的虛函數(shù).
  

api(片段):

頭文件  #include
//設(shè)置一開(kāi)始就有鼠標(biāo)跟蹤
setMouseTracking(true)
void mousePressEvent(QMouseEvent *e):
e->x;
e->y;
int button=e->button();
if( button==Qt::LeftButton);
.. button==Qt::RightButton;
.. button==Qt::RightButton;
..//Label支持html的寫(xiě)法
QString str=QString("

pressed[%1,%2]

"). arg(x).arg(y); this->setText(str); void mouseMoveEvent(QMouseEvent *e): 其他同上,補(bǔ)充如下 int button=e->buttons(); ..if(buttons & Qt::LeftButton) ..if(buttons & Qt::RightButton) ..if(buttons & Qt::MidButton)

3.事件分發(fā)器(事件分發(fā)函數(shù))
作用: 分發(fā)各種事件到事件處理函數(shù)中.

方法:

  第一步 創(chuàng)建一個(gè)QTProject,基類(lèi)為QWidget(勾選ui);
  第二步 在.ui中拖一個(gè)Label的控件;
  第三步 在這個(gè)Project中點(diǎn)擊Project名添加新文件, 添加一個(gè)C++ class,繼承QLabel;
  第四步 把窗口的Label控件提升為第三步創(chuàng)建的類(lèi);
  第五步 在新建類(lèi)中重寫(xiě)事件分發(fā)函數(shù).
  

api:

 //事件分發(fā)函數(shù)
 bool myLabel::event(QEvent *e)
 {
//如果返回值是true, 表示事件被處理了
//如果返回值是false,表示事件沒(méi)有被處理
比如:if(e->type()==QEvent::MouseMove)
{
    return true;
}
//讓其他事件傳遞下去
return QLabel::event(e);
}

4.事件過(guò)濾器
作用:

 1.事件到達(dá)窗口之前要經(jīng)過(guò)事件過(guò)濾器
 與事件分發(fā)器不同的地方: 如果窗口中有多個(gè)label,那么點(diǎn)擊多個(gè)label,這時(shí),多個(gè)label都可以接收到鼠標(biāo)點(diǎn)擊事件,
 如果要截取鼠標(biāo)點(diǎn)擊事件,那么可以從事件過(guò)濾器中統(tǒng)一截取;
 2.事情過(guò)濾器是一個(gè)object的對(duì)象或子類(lèi)的對(duì)象;
 3.事件過(guò)濾器需要安裝;
 4.在object的對(duì)象或子類(lèi)對(duì)象中重寫(xiě)事件過(guò)濾器函數(shù).

方法一:

   第一步 創(chuàng)建一個(gè)QTProject,基類(lèi)為QWidget(勾選ui);
   第二步 在.ui中拖一個(gè)Label的控件;
   第三步 在這個(gè)Project中點(diǎn)擊Project名添加新文件, 添加一個(gè)C++ class,繼承QLabel;
   第四步 把窗口的Label控件提升為第三步創(chuàng)建的類(lèi);
   第五步 在這個(gè)新建的類(lèi)中重寫(xiě)了事件過(guò)濾器函數(shù).

api:

//重寫(xiě)事件過(guò)濾器函數(shù)
bool myLabel::eventFilter(QObject *watched, QEvent *event)
{
//返回值是true,表示該事件受到攔截,不會(huì)到達(dá)窗口
//返回值是false,表示該事件沒(méi)有受到攔截
if(event->type()==QEvent::MouseButtonPress)
{
    return true;
}
return false;
}
Finally://新建的Label類(lèi)構(gòu)造函數(shù)中,安裝事件過(guò)濾器
       this->installEventFilter(this);

方法二:

   第一步 創(chuàng)建一個(gè)QTProject,基類(lèi)為QWidget(勾選ui);
   第二步 在.ui中拖一個(gè)Label的控件;
   第三步 在這個(gè)Project中點(diǎn)擊Project名添加新文件, 添加一個(gè)C++ class,繼承QLabel;
   第四步 把窗口的Label控件提升為第三步創(chuàng)建的類(lèi);
   第五步 再創(chuàng)建一個(gè)類(lèi),繼承Object;
   第六步 在該類(lèi)中重寫(xiě)了事件過(guò)濾器函數(shù);

api:

#include//事件過(guò)濾器的頭文件
bool myEvent::eventFilter(QObject *watched, QEvent *event)
{
//返回值是true,表示該事件受到攔截,不會(huì)到達(dá)窗口
//返回值是false,表示該事件沒(méi)有受到攔截
if(event->type()==QEvent::MouseButtonPress)
{
    //return true;
}
return false;
}
Finally://安裝事件過(guò)濾器,在新建的繼承Label的類(lèi)中
myEvent *filter=new MyEvent(this);
this->installEventFilter(filter);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/114696.html

相關(guān)文章

  • 程序員的自我修煉——新手如何學(xué)好編程

    摘要:熱門(mén)編程語(yǔ)言特點(diǎn)包羅萬(wàn)物精細(xì)對(duì)底層知識(shí)涉列廣泛。特點(diǎn)語(yǔ)法簡(jiǎn)單可移植性良好。編寫(xiě)代碼的工具建議新手先使用編程工具,學(xué)習(xí)兩個(gè)月后再?lài)L試其他的編譯器,推薦使用大后期熟練掌握,因?yàn)閷?shí)際開(kāi)發(fā)環(huán)境多在上進(jìn)行。 熱門(mén)編程語(yǔ)言 ? ? ?1、C++: ? ? ? ? ? ?特點(diǎn):包羅萬(wàn)物、精細(xì)、對(duì)底層知識(shí)...

    ingood 評(píng)論0 收藏0
  • Python

    摘要:最近看前端都展開(kāi)了幾場(chǎng)而我大知乎最熱語(yǔ)言還沒(méi)有相關(guān)。有關(guān)書(shū)籍的介紹,大部分截取自是官方介紹。但從開(kāi)始,標(biāo)準(zhǔn)庫(kù)為我們提供了模塊,它提供了和兩個(gè)類(lèi),實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫(xiě)線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書(shū), 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來(lái)說(shuō), 基礎(chǔ)大概也就夠用了...

    dailybird 評(píng)論0 收藏0
  • Python - 收藏集 - 掘金

    摘要:首發(fā)于我的博客線程池進(jìn)程池網(wǎng)絡(luò)編程之同步異步阻塞非阻塞后端掘金本文為作者原創(chuàng),轉(zhuǎn)載請(qǐng)先與作者聯(lián)系。在了解的數(shù)據(jù)結(jié)構(gòu)時(shí),容器可迭代對(duì)象迭代器使用進(jìn)行并發(fā)編程篇二掘金我們今天繼續(xù)深入學(xué)習(xí)。 Python 算法實(shí)戰(zhàn)系列之棧 - 后端 - 掘金原文出處: 安生??? 棧(stack)又稱(chēng)之為堆棧是一個(gè)特殊的有序表,其插入和刪除操作都在棧頂進(jìn)行操作,并且按照先進(jìn)后出,后進(jìn)先出的規(guī)則進(jìn)行運(yùn)作。 如...

    546669204 評(píng)論0 收藏0
  • 【機(jī)器視覺(jué)】Qt集成Halcon開(kāi)發(fā)環(huán)境詳解(一)

    摘要:也是可以設(shè)置使用靜態(tài)庫(kù)的溫馨提示對(duì)兼容性比較好,因此推薦使用編譯器。下安裝編譯器溫馨提示如果中已經(jīng)安裝編譯器,則該安裝步驟可以跳過(guò)。 00. 目錄 文章目錄 00...

    tianyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<