Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
要
button控件是由system.windows.forms.button類提供的控件,又稱為按鈕控件。
正文
Button控件,又稱為按鈕控件,它表允許用戶通過單擊來執行操作。Button控件既可以顯示文本,也可以顯示圖像,當該控件被單擊時,它看起來像是被按下,然后被釋放。Button控件最常用的是Text屬性,其中,Text屬性用來設Button:控件顯示的文本,Click事件用來指定單擊Button控件時執行的操作。
屬性
Anchor | 獲取或設置控件綁定到的容器的邊緣并確定控件如何隨其父級一起調整大小。<br><br>(繼承自 Control) |
AutoEllipsis | 獲取或設置一個值,該值指示是否要在控件的右邊緣顯示省略號 (...) 以表示控件文本超出指定的控件長度。<br><br>(繼承自 ButtonBase) |
BackColor | 獲取或設置控件的背景色。<br><br>(繼承自 ButtonBase) |
Cursor | 獲取或設置當鼠標指針位于控件上時顯示的光標。<br><br>(繼承自 Control) |
DialogResult | 獲取或設置一個值,該值在單擊按鈕時返回到父窗體。 |
Dock | 獲取或設置哪些控件邊框??康狡涓缚丶⒋_定控件如何隨其父級一起調整大小。<br><br>(繼承自 Control) |
Enabled | 獲取或設置一個值,該值指示控件是否可以對用戶交互作出響應。<br><br>(繼承自 Control) |
FlatAppearance | 獲取用于指示選中狀態和鼠標狀態的邊框外觀和顏色。<br><br>(繼承自 ButtonBase) |
FlatStyle | 獲取或設置按鈕控件的平面樣式外觀。<br><br>(繼承自 ButtonBase) |
Focused | 獲取一個值,該值指示控件是否有輸入焦點。<br><br>(繼承自 Control) |
Font | 獲取或設置控件顯示的文字的字體。<br><br>(繼承自 Control) |
ForeColor | 獲取或設置控件的前景色。<br><br>(繼承自 Control) |
Image | 獲取或設置顯示在按鈕控件上的圖像。<br><br>(繼承自 ButtonBase) |
ImageAlign | 獲取或設置按鈕控件上的圖像對齊方式。<br><br>(繼承自 ButtonBase) |
ImageIndex | 獲取或設置按鈕控件上顯示的圖像的圖像列表索引值。<br><br>(繼承自 ButtonBase) |
ImageKey | 獲取或設置 ImageList 中的圖像的鍵訪問器。<br><br>(繼承自 ButtonBase) |
ImageList | 獲取或設置包含按鈕控件上顯示的 ImageList 的 Image。<br><br>(繼承自 ButtonBase) |
Name | 獲取或設置控件的名稱。<br><br>(繼承自 Control) |
Size | 獲取或設置控件的高度和寬度。<br><br>(繼承自 Control) |
TabIndex | 獲取或設置控件在其容器內的 Tab 鍵順序。<br><br>(繼承自 Control) |
TabStop | 獲取或設置一個值,該值指示用戶能否使用 Tab 鍵將焦點放到該控件上。<br><br>(繼承自 Control) |
Tag | 獲取或設置包含有關控件的數據的對象。<br><br>(繼承自 Control) |
Text | 獲取或設置與此控件關聯的文本。<br><br>(繼承自 ButtonBase) |
TextAlign | 獲取或設置按鈕控件上的文本對齊方式。<br><br>(繼承自 ButtonBase) |
Top | 獲取或設置控件上邊緣與其容器的工作區上邊緣之間的距離(以像素為單位)。<br><br>(繼承自 Control) |
TopLevelControl | 獲取沒有另一個 Windows 窗體控件作為其父級的父控件。 通常,這是控件所在的最外面的 Form。<br><br>(繼承自 Control) |
Visible | 獲取或設置一個值,該值指示是否顯示該控件及其所有子控件。<br><br>(繼承自 Control) |
Width | 獲取或設置控件的寬度。<br><br>(繼承自 Control) |
BackgroundImage | 獲取或設置在控件中顯示的背景圖像。<br><br>(繼承自 Control) |
BackgroundImageLayout | 獲取或設置在 ImageLayout 枚舉中定義的背景圖像布局。<br><br>(繼承自 Control) |
事件
Click | 在單擊控件時發生。<br><br>(繼承自 Control) |
DoubleClick | 當用戶雙擊 Button 控件時發生。 |
Enter | 進入控件時發生。<br><br>(繼承自 Control) |
MouseClick | 用鼠標單擊控件時發生。<br><br>(繼承自 Control) |
MouseDoubleClick | 當用戶使用鼠標雙擊 Button 控件時發生。 |
MouseDown | 當鼠標指針位于控件上并按下鼠標鍵時發生。<br><br>(繼承自 Control) |
MouseEnter | 在鼠標指針進入控件時發生。<br><br>(繼承自 Control) |
MouseHover | 在鼠標指針停放在控件上時發生。<br><br>(繼承自 Control) |
MouseLeave | 在鼠標指針離開控件時發生。<br><br>(繼承自 Control) |
MouseMove | 在鼠標指針移到控件上時發生。<br><br>(繼承自 Control) |
MouseUp | 在鼠標指針在控件上并釋放鼠標鍵時發生。<br><br>(繼承自 Control) |
MouseWheel | 在控件有焦點且鼠標輪移動時發生。<br><br>(繼承自 Control) |
Move | 在移動控件時發生。<br><br>(繼承自 Control) |
對話框布局
設置Anchor 為 Bottom,Right
我們給按鈕設置一條線的樣式
圖片背景BackgroundImage,添加圖片,
設置背景填充樣式BackgroundImageLayout,這里我選 None
Center | 2 | 圖像在控件的矩形工作區中居中顯示。 |
None | 0 | 圖像沿控件的矩形工作區頂部左對齊。 |
Stretch | 3 | 圖像沿控件的矩形工作區拉伸。 |
Tile | 1 | 圖像沿控件的矩形工作區平鋪。 |
Zoom | 4 | 圖像在控件的矩形工作區中放大。 |
給按鈕添加一個圖標
添加一個click事件
話框在Qt GUI應用程序中有著廣泛的用途,對話框有模態、非模態兩種情況。
對于參數選擇的對話框,一般用模態對話框;對于顯示或查看某些內容的對話框,一般用非模態對話框。
對話框類QDialog,官方文檔:http://qt-project.org/doc/qt-4.8/qdialog.html
模態對話框通過調用exec()函數實現,使用模態對話框時,事件就在對話框內部循環,必須將對話框關閉才能繼續執行主界面的操作。
需要注意的是,關閉模態對話框時,exec()將返回一個值。
原型:int QDialog::exec () [slot]
返回值利用:比如對話框中有Ok和Cancel兩個按鈕,點擊Ok按鈕時,關閉對話框同時主程序接受對話框中設置的參數,點擊Cancel或右上角的X后,關閉對話框并且立即返回不再執行下面的程序。這種情況下,將Ok按鈕的clicked()信號與accept()槽連接,Cancel按鈕的clicked信號與reject()槽連接。這時,當點擊Ok按鈕時,將觸發accept()槽,exec()返回QDialog::Recepted,當點擊Cancel按鈕時,將觸發reject槽,exec()返回QDialog::Rejected。
connect(ui.Ok,SIGNAL(clicked()),this,SLOT(accept()));
connect(ui.Cancel,SIGNAL(clicked()),this,SLOT(reject()));
執行時,進行一下判斷,點擊了Cancel返回,點擊了Ok傳遞對話框中的參數繼續執行
//在某個函數中調用對話框
// a為對話框類對象
if(a.exec()==QDialog::Rejected)
{
//操作
return;
}
//傳遞對話框中的參數
//繼續操作
不知道說明白了沒有,不明白的話自己下代碼實現一下。
非模態對話框調用show()函數實現,當然在主程序中,調用非模態對話框時,如果只寫個show(),可能是對話框一閃而過,為了解決這個情況,需要全局對象的事件響應槽processEvents(),定時的訪問該對話框,這樣就可以處理主界面的事件同時對話框也不會消失。
本人采用方法時利用QTimer類的singleShot()方法。QTimer類提供了對時鐘的操作。
QTimer類的官方文檔:http://qt-project.org/doc/qt-4.8/qtimer.html
singleShot的原型:void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [static]
第一個參數為執行的時間間隔,單位為ms
第二個參數為接受的對象
第三個參數為觸發的槽
恰好,我們可以每隔msec時間觸發processEvents(),從而使對話框不消失,第二個參數為對話框對象。需要注意的是,對話框的對象要定義在堆上(即要定義成指針對象),因為如果定義在棧上,執行完后函數后對象會被自動清理掉,找不到第二個參數所需的對象,就沒法顯示出對話框了。
#include <QTimer>
CModallessDialog *dialog; //最好定義成全局變量
dialog=new CModallessDialog;
dialog->show();
dialog->setTitle(tr("非模態對話框")); //設置窗口標題
//對話框中的一些處理
QTimer::singleShot(200,dialog,SLOT(qApp->processEvents())); //時間間隔200ms
在使用時,將dialog對象delete掉之后對話框就會消失
//如果對話框顯示,就將其刪除
if(NULL!=dialog)
{
delete dialog
dialog=NULL;
}
在顯示對話框時,也要注意如果dialog!=NULLs時,現將其delete掉賦NULL再分配地址。
了,這一節咱們來實現預覽功能的第一步:給工程多加一個窗體,并且在按“預覽”按鈕時,將它顯示出來。
新建窗口
0、在項目窗體里單擊鼠標右鍵,然后選擇Add New...,然后在彈出的窗口里選擇“QT->QT設計師界面類”,并點擊Choose...
Add New...
1、然后的步驟里選擇Dialog without Buttons,點擊下一步
Dialog without Buttons
2、設置好我們的類名,在這里我寫的PreViewVideoWindow,記住,只需要改類名,其它的地方會自動變,不需要改。
PreViewVideoWindow
3、接下來的這一步不需要改,直接點“完成”就行了。
這時,我們的工程里就多出一個新的空白窗體來了,而且項目窗口里也會自動創建出窗體的類來。
新窗體類
此時,我們的新窗體就創建完成了。
要注意的地方是:這個窗體此時在工程運行時并不存在,如果要把它顯示出來,我們需要用工用代碼去創建它顯示它并控制它。在工程里只有主窗體是自動創建并顯示出來的,其它窗體都需要我們手動去操作。
點擊按鈕顯示新窗體
現在我們回到mainwindow.h中,在頭部寫入
#include "previewvideowindow.h" //注意,要用引號,不要用<>。
然后在mainwindow中定義一個變量,用來存儲這個新窗體
PreViewVideoWindow *preWindow;
然后在“預覽”按鈕的槽函數中寫入如下代碼:
void MainWindow::on_btn_PreView_clicked()
{
//創建窗體實例
preWindow=new PreViewVideoWindow(this); //注意要有this,就不用自己刪除了
//設置窗體關閉時自動刪除類實例
//如果不設置這個,關閉窗體時只是隱藏了它,并沒有銷毀
preWindow->setAttribute(Qt::WA_DeleteOnClose, true);
//顯示出窗體
preWindow->show();
}
我這代碼是點擊時就會新建窗體,并設置好在窗體關閉時自動刪除它的實例。這個按鈕每次點擊都會出現一個新窗口,如果您想實現只出現一個窗口的情況,就需要自己去設置檢查并維護一個變量來判斷了,因為我不需要,所以我這里就沒有做。
新窗體顯示成功
看,新窗體顯示出來了,但是,它右上角怎么有個問號按鈕呢?下面我們把它去掉,在previewvideowindow.cpp中構造函數里寫入如下代碼:
PreViewVideoWindow::PreViewVideoWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::PreViewVideoWindow)
{
ui->setupUi(this);
//就是這句,這個是用來設置窗體樣式的,現在讓它只顯示一個關閉按鈕。
this->setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);
}
成功去掉問號按鈕
下一節讓這個新窗體能顯示視頻,期待。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。