整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          51.C# Button控件

          51.C# Button控件


          button控件是由system.windows.forms.button類提供的控件,又稱為按鈕控件。

          正文


          Button控件,又稱為按鈕控件,它表允許用戶通過(guò)單擊來(lái)執(zhí)行操作。Button控件既可以顯示文本,也可以顯示圖像,當(dāng)該控件被單擊時(shí),它看起來(lái)像是被按下,然后被釋放。Button控件最常用的是Text屬性,其中,Text屬性用來(lái)設(shè)Button:控件顯示的文本,Click事件用來(lái)指定單擊Button控件時(shí)執(zhí)行的操作。

          屬性


          Anchor

          獲取或設(shè)置控件綁定到的容器的邊緣并確定控件如何隨其父級(jí)一起調(diào)整大小。<br><br>(繼承自 Control)

          AutoEllipsis

          獲取或設(shè)置一個(gè)值,該值指示是否要在控件的右邊緣顯示省略號(hào) (...) 以表示控件文本超出指定的控件長(zhǎng)度。<br><br>(繼承自 ButtonBase)

          BackColor

          獲取或設(shè)置控件的背景色。<br><br>(繼承自 ButtonBase)

          Cursor

          獲取或設(shè)置當(dāng)鼠標(biāo)指針位于控件上時(shí)顯示的光標(biāo)。<br><br>(繼承自 Control)

          DialogResult

          獲取或設(shè)置一個(gè)值,該值在單擊按鈕時(shí)返回到父窗體。

          Dock

          獲取或設(shè)置哪些控件邊框停靠到其父控件并確定控件如何隨其父級(jí)一起調(diào)整大小。<br><br>(繼承自 Control)

          Enabled

          獲取或設(shè)置一個(gè)值,該值指示控件是否可以對(duì)用戶交互作出響應(yīng)。<br><br>(繼承自 Control)

          FlatAppearance

          獲取用于指示選中狀態(tài)和鼠標(biāo)狀態(tài)的邊框外觀和顏色。<br><br>(繼承自 ButtonBase)

          FlatStyle

          獲取或設(shè)置按鈕控件的平面樣式外觀。<br><br>(繼承自 ButtonBase)

          Focused

          獲取一個(gè)值,該值指示控件是否有輸入焦點(diǎn)。<br><br>(繼承自 Control)

          Font

          獲取或設(shè)置控件顯示的文字的字體。<br><br>(繼承自 Control)

          ForeColor

          獲取或設(shè)置控件的前景色。<br><br>(繼承自 Control)

          Image

          獲取或設(shè)置顯示在按鈕控件上的圖像。<br><br>(繼承自 ButtonBase)

          ImageAlign

          獲取或設(shè)置按鈕控件上的圖像對(duì)齊方式。<br><br>(繼承自 ButtonBase)

          ImageIndex

          獲取或設(shè)置按鈕控件上顯示的圖像的圖像列表索引值。<br><br>(繼承自 ButtonBase)

          ImageKey

          獲取或設(shè)置 ImageList 中的圖像的鍵訪問(wèn)器。<br><br>(繼承自 ButtonBase)

          ImageList

          獲取或設(shè)置包含按鈕控件上顯示的 ImageList 的 Image。<br><br>(繼承自 ButtonBase)

          Name

          獲取或設(shè)置控件的名稱。<br><br>(繼承自 Control)

          Size

          獲取或設(shè)置控件的高度和寬度。<br><br>(繼承自 Control)

          TabIndex

          獲取或設(shè)置控件在其容器內(nèi)的 Tab 鍵順序。<br><br>(繼承自 Control)

          TabStop

          獲取或設(shè)置一個(gè)值,該值指示用戶能否使用 Tab 鍵將焦點(diǎn)放到該控件上。<br><br>(繼承自 Control)

          Tag

          獲取或設(shè)置包含有關(guān)控件的數(shù)據(jù)的對(duì)象。<br><br>(繼承自 Control)

          Text

          獲取或設(shè)置與此控件關(guān)聯(lián)的文本。<br><br>(繼承自 ButtonBase)

          TextAlign

          獲取或設(shè)置按鈕控件上的文本對(duì)齊方式。<br><br>(繼承自 ButtonBase)

          Top

          獲取或設(shè)置控件上邊緣與其容器的工作區(qū)上邊緣之間的距離(以像素為單位)。<br><br>(繼承自 Control)

          TopLevelControl

          獲取沒(méi)有另一個(gè) Windows 窗體控件作為其父級(jí)的父控件。 通常,這是控件所在的最外面的 Form。<br><br>(繼承自 Control)

          Visible

          獲取或設(shè)置一個(gè)值,該值指示是否顯示該控件及其所有子控件。<br><br>(繼承自 Control)

          Width

          獲取或設(shè)置控件的寬度。<br><br>(繼承自 Control)

          BackgroundImage

          獲取或設(shè)置在控件中顯示的背景圖像。<br><br>(繼承自 Control)

          BackgroundImageLayout

          獲取或設(shè)置在 ImageLayout 枚舉中定義的背景圖像布局。<br><br>(繼承自 Control)

          事件


          Click

          在單擊控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          DoubleClick

          當(dāng)用戶雙擊 Button 控件時(shí)發(fā)生。

          Enter

          進(jìn)入控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseClick

          用鼠標(biāo)單擊控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseDoubleClick

          當(dāng)用戶使用鼠標(biāo)雙擊 Button 控件時(shí)發(fā)生。

          MouseDown

          當(dāng)鼠標(biāo)指針位于控件上并按下鼠標(biāo)鍵時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseEnter

          在鼠標(biāo)指針進(jìn)入控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseHover

          在鼠標(biāo)指針停放在控件上時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseLeave

          在鼠標(biāo)指針離開(kāi)控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseMove

          在鼠標(biāo)指針移到控件上時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseUp

          在鼠標(biāo)指針在控件上并釋放鼠標(biāo)鍵時(shí)發(fā)生。<br><br>(繼承自 Control)

          MouseWheel

          在控件有焦點(diǎn)且鼠標(biāo)輪移動(dòng)時(shí)發(fā)生。<br><br>(繼承自 Control)

          Move

          在移動(dòng)控件時(shí)發(fā)生。<br><br>(繼承自 Control)

          對(duì)話框布局

          設(shè)置Anchor 為 Bottom,Right

          我們給按鈕設(shè)置一條線的樣式

          圖片背景BackgroundImage,添加圖片,

          設(shè)置背景填充樣式BackgroundImageLayout,這里我選 None



          Center

          2

          圖像在控件的矩形工作區(qū)中居中顯示。

          None

          0

          圖像沿控件的矩形工作區(qū)頂部左對(duì)齊。

          Stretch

          3

          圖像沿控件的矩形工作區(qū)拉伸。

          Tile

          1

          圖像沿控件的矩形工作區(qū)平鋪。

          Zoom

          4

          圖像在控件的矩形工作區(qū)中放大。

          給按鈕添加一個(gè)圖標(biāo)

          添加一個(gè)click事件

          話框在Qt GUI應(yīng)用程序中有著廣泛的用途,對(duì)話框有模態(tài)、非模態(tài)兩種情況。

          對(duì)于參數(shù)選擇的對(duì)話框,一般用模態(tài)對(duì)話框;對(duì)于顯示或查看某些內(nèi)容的對(duì)話框,一般用非模態(tài)對(duì)話框。

          對(duì)話框類QDialog,官方文檔:http://qt-project.org/doc/qt-4.8/qdialog.html

          1. 模態(tài)對(duì)話框

          模態(tài)對(duì)話框通過(guò)調(diào)用exec()函數(shù)實(shí)現(xiàn),使用模態(tài)對(duì)話框時(shí),事件就在對(duì)話框內(nèi)部循環(huán),必須將對(duì)話框關(guān)閉才能繼續(xù)執(zhí)行主界面的操作。

          需要注意的是,關(guān)閉模態(tài)對(duì)話框時(shí),exec()將返回一個(gè)值。

          原型:int QDialog::exec () [slot]

          返回值利用:比如對(duì)話框中有Ok和Cancel兩個(gè)按鈕,點(diǎn)擊Ok按鈕時(shí),關(guān)閉對(duì)話框同時(shí)主程序接受對(duì)話框中設(shè)置的參數(shù),點(diǎn)擊Cancel或右上角的X后,關(guān)閉對(duì)話框并且立即返回不再執(zhí)行下面的程序。這種情況下,將Ok按鈕的clicked()信號(hào)與accept()槽連接,Cancel按鈕的clicked信號(hào)與reject()槽連接。這時(shí),當(dāng)點(diǎn)擊Ok按鈕時(shí),將觸發(fā)accept()槽,exec()返回QDialog::Recepted,當(dāng)點(diǎn)擊Cancel按鈕時(shí),將觸發(fā)reject槽,exec()返回QDialog::Rejected。

          connect(ui.Ok,SIGNAL(clicked()),this,SLOT(accept()));
          connect(ui.Cancel,SIGNAL(clicked()),this,SLOT(reject()));

          執(zhí)行時(shí),進(jìn)行一下判斷,點(diǎn)擊了Cancel返回,點(diǎn)擊了Ok傳遞對(duì)話框中的參數(shù)繼續(xù)執(zhí)行

          	//在某個(gè)函數(shù)中調(diào)用對(duì)話框
           // a為對(duì)話框類對(duì)象
           if(a.exec()==QDialog::Rejected)
           {
               //操作
               return;
           }
           //傳遞對(duì)話框中的參數(shù)
           //繼續(xù)操作

          不知道說(shuō)明白了沒(méi)有,不明白的話自己下代碼實(shí)現(xiàn)一下。

          2. 非模態(tài)對(duì)話框

          非模態(tài)對(duì)話框調(diào)用show()函數(shù)實(shí)現(xiàn),當(dāng)然在主程序中,調(diào)用非模態(tài)對(duì)話框時(shí),如果只寫(xiě)個(gè)show(),可能是對(duì)話框一閃而過(guò),為了解決這個(gè)情況,需要全局對(duì)象的事件響應(yīng)槽processEvents(),定時(shí)的訪問(wèn)該對(duì)話框,這樣就可以處理主界面的事件同時(shí)對(duì)話框也不會(huì)消失。

          本人采用方法時(shí)利用QTimer類的singleShot()方法。QTimer類提供了對(duì)時(shí)鐘的操作。

          QTimer類的官方文檔:http://qt-project.org/doc/qt-4.8/qtimer.html

          singleShot的原型:void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [static]

          第一個(gè)參數(shù)為執(zhí)行的時(shí)間間隔,單位為ms

          第二個(gè)參數(shù)為接受的對(duì)象

          第三個(gè)參數(shù)為觸發(fā)的槽

          恰好,我們可以每隔msec時(shí)間觸發(fā)processEvents(),從而使對(duì)話框不消失,第二個(gè)參數(shù)為對(duì)話框?qū)ο蟆P枰⒁獾氖牵瑢?duì)話框的對(duì)象要定義在堆上(即要定義成指針對(duì)象),因?yàn)槿绻x在棧上,執(zhí)行完后函數(shù)后對(duì)象會(huì)被自動(dòng)清理掉,找不到第二個(gè)參數(shù)所需的對(duì)象,就沒(méi)法顯示出對(duì)話框了。

          #include <QTimer>
          
          CModallessDialog  *dialog;  //最好定義成全局變量
          
          dialog=new CModallessDialog;
          dialog->show();
          dialog->setTitle(tr("非模態(tài)對(duì)話框")); //設(shè)置窗口標(biāo)題
          //對(duì)話框中的一些處理
          QTimer::singleShot(200,dialog,SLOT(qApp->processEvents()));  //時(shí)間間隔200ms

          在使用時(shí),將dialog對(duì)象delete掉之后對(duì)話框就會(huì)消失

          //如果對(duì)話框顯示,就將其刪除
          if(NULL!=dialog)
          {
              delete dialog
              dialog=NULL;
          }

          在顯示對(duì)話框時(shí),也要注意如果dialog!=NULLs時(shí),現(xiàn)將其delete掉賦NULL再分配地址。

          了,這一節(jié)咱們來(lái)實(shí)現(xiàn)預(yù)覽功能的第一步:給工程多加一個(gè)窗體,并且在按“預(yù)覽”按鈕時(shí),將它顯示出來(lái)。

          新建窗口

          0、在項(xiàng)目窗體里單擊鼠標(biāo)右鍵,然后選擇Add New...,然后在彈出的窗口里選擇“QT->QT設(shè)計(jì)師界面類”,并點(diǎn)擊Choose...

          Add New...

          1、然后的步驟里選擇Dialog without Buttons,點(diǎn)擊下一步

          Dialog without Buttons


          2、設(shè)置好我們的類名,在這里我寫(xiě)的PreViewVideoWindow,記住,只需要改類名,其它的地方會(huì)自動(dòng)變,不需要改。

          PreViewVideoWindow

          3、接下來(lái)的這一步不需要改,直接點(diǎn)“完成”就行了。

          這時(shí),我們的工程里就多出一個(gè)新的空白窗體來(lái)了,而且項(xiàng)目窗口里也會(huì)自動(dòng)創(chuàng)建出窗體的類來(lái)。

          新窗體類

          此時(shí),我們的新窗體就創(chuàng)建完成了。

          要注意的地方是:這個(gè)窗體此時(shí)在工程運(yùn)行時(shí)并不存在,如果要把它顯示出來(lái),我們需要用工用代碼去創(chuàng)建它顯示它并控制它。在工程里只有主窗體是自動(dòng)創(chuàng)建并顯示出來(lái)的,其它窗體都需要我們手動(dòng)去操作。

          點(diǎn)擊按鈕顯示新窗體

          現(xiàn)在我們回到mainwindow.h中,在頭部寫(xiě)入

          #include "previewvideowindow.h" //注意,要用引號(hào),不要用<>。

          然后在mainwindow中定義一個(gè)變量,用來(lái)存儲(chǔ)這個(gè)新窗體

          PreViewVideoWindow *preWindow;

          然后在“預(yù)覽”按鈕的槽函數(shù)中寫(xiě)入如下代碼:

          void MainWindow::on_btn_PreView_clicked()
          {
              //創(chuàng)建窗體實(shí)例
              preWindow=new PreViewVideoWindow(this);  //注意要有this,就不用自己刪除了
          
              //設(shè)置窗體關(guān)閉時(shí)自動(dòng)刪除類實(shí)例
              //如果不設(shè)置這個(gè),關(guān)閉窗體時(shí)只是隱藏了它,并沒(méi)有銷毀
              preWindow->setAttribute(Qt::WA_DeleteOnClose, true);
          
              //顯示出窗體
              preWindow->show();
          }

          我這代碼是點(diǎn)擊時(shí)就會(huì)新建窗體,并設(shè)置好在窗體關(guān)閉時(shí)自動(dòng)刪除它的實(shí)例。這個(gè)按鈕每次點(diǎn)擊都會(huì)出現(xiàn)一個(gè)新窗口,如果您想實(shí)現(xiàn)只出現(xiàn)一個(gè)窗口的情況,就需要自己去設(shè)置檢查并維護(hù)一個(gè)變量來(lái)判斷了,因?yàn)槲也恍枰晕疫@里就沒(méi)有做。

          新窗體顯示成功

          看,新窗體顯示出來(lái)了,但是,它右上角怎么有個(gè)問(wèn)號(hào)按鈕呢?下面我們把它去掉,在previewvideowindow.cpp中構(gòu)造函數(shù)里寫(xiě)入如下代碼:

          PreViewVideoWindow::PreViewVideoWindow(QWidget *parent) :
              QDialog(parent),
              ui(new Ui::PreViewVideoWindow)
          {
              ui->setupUi(this);
            
            //就是這句,這個(gè)是用來(lái)設(shè)置窗體樣式的,現(xiàn)在讓它只顯示一個(gè)關(guān)閉按鈕。
              this->setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);
          }

          成功去掉問(wèn)號(hào)按鈕

          下一節(jié)讓這個(gè)新窗體能顯示視頻,期待。


          主站蜘蛛池模板: 日本精品一区二区三区视频| 精品人妻码一区二区三区 | 亚洲AV成人精品日韩一区 | 精品国产一区二区三区www| 韩国精品一区二区三区无码视频| 卡通动漫中文字幕第一区| 国产成人精品一区二三区在线观看| 精品国产AⅤ一区二区三区4区 | 交换国产精品视频一区| 波多野结衣一区二区三区| 国产精品熟女视频一区二区| 国模吧无码一区二区三区| 亚洲AV成人一区二区三区AV| 波多野结衣一区二区三区| 国产成人精品一区二区三区| 一区二区三区四区视频| 无码一区二区三区亚洲人妻| 国产激情精品一区二区三区| 久久久91精品国产一区二区| 性色av无码免费一区二区三区 | 亚洲色精品aⅴ一区区三区| 亚洲一区AV无码少妇电影| 蜜桃视频一区二区| 99久久精品国产一区二区成人 | 91精品一区国产高清在线| 国产精品一区视频| 精品无码人妻一区二区三区不卡| 日韩精品一区二区三区老鸭窝 | 免费一区二区无码东京热| 在线欧美精品一区二区三区 | 亚洲国产精品自在线一区二区 | 无码8090精品久久一区| 亚洲无圣光一区二区| 亚洲国产一区明星换脸| 伊人无码精品久久一区二区| 中文字幕在线精品视频入口一区| 精品人妻无码一区二区色欲产成人| 岛国精品一区免费视频在线观看| 韩国理伦片一区二区三区在线播放| 日本精品一区二区三区在线视频一| 久久精品午夜一区二区福利|