Qt入門(16)——組裝視窗部件
這個例子顯示了建立幾個視窗部件並用訊號和槽把它們連線起來,和如何處理重新定義大小事件。
這裡顯示的是三個新的被包含的標頭檔案。qslider.h和qlcdnumber.h在這裡是因為我們使用了兩個新的視窗部件,QSlider和QLCDNumber。qvbox.h在這裡是因為我們使用了Qt的自動佈局支援。
MyWidget現在繼承了QVBox,而不是QWidget。我們通過這種方式來使用QVBox的佈局(它可以把它的子視窗部件垂直地放在自己裡面)。重新定義大小自動地被QVBox處理,因此現在也就被MyWidget處理了。
QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );
lcd是一個QLCDNumber,一個可以按像LCD的方式顯示數字的視窗部件。這個例項被設定為顯示兩個數字,並且是this的子視窗部件。它被命名為“lcd”。
QSlider是一個經典的滑塊,使用者可以通過在拖動一個東西在一定範圍內調節一個整數數值的方式來使用這個視窗部件。這裡我們建立了一個水平的滑塊,設定它的範圍是0~99(包括0和99,參見QSlider::setRange()文件)並且它的初始值是0。
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
這裡我們是用了訊號/槽機制把滑塊的valueChanged()訊號和LCD數字的display()槽連線起來了。
無論什麼時候滑塊的值發生了變化,它都會通過發射valueChanged()訊號來廣播這個新的值。因為這個訊號已經和LCD數字的display()槽連線起來了,當訊號被廣播的時候,這個槽就被呼叫了。這兩個物件中的任何一個都不知道對方。這就是元件程式設計的本質。
槽是和普通C++成員函式的方式不同,但有著普通C++成員函式的方位規則。
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qvbox.h>
這裡顯示的是三個新的被包含的標頭檔案。qslider.h和qlcdnumber.h在這裡是因為我們使用了兩個新的視窗部件,QSlider和QLCDNumber。qvbox.h在這裡是因為我們使用了Qt的自動佈局支援。
class MyWidget : public QVBox
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};
MyWidget::MyWidget( QWidget *parent, const char *name )
: QVBox( parent, name )
{
MyWidget現在繼承了QVBox,而不是QWidget。我們通過這種方式來使用QVBox的佈局(它可以把它的子視窗部件垂直地放在自己裡面)。重新定義大小自動地被QVBox處理,因此現在也就被MyWidget處理了。
QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );
lcd是一個QLCDNumber,一個可以按像LCD的方式顯示數字的視窗部件。這個例項被設定為顯示兩個數字,並且是this的子視窗部件。它被命名為“lcd”。
QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 0 );
QSlider是一個經典的滑塊,使用者可以通過在拖動一個東西在一定範圍內調節一個整數數值的方式來使用這個視窗部件。這裡我們建立了一個水平的滑塊,設定它的範圍是0~99(包括0和99,參見QSlider::setRange()文件)並且它的初始值是0。
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
這裡我們是用了訊號/槽機制把滑塊的valueChanged()訊號和LCD數字的display()槽連線起來了。
無論什麼時候滑塊的值發生了變化,它都會通過發射valueChanged()訊號來廣播這個新的值。因為這個訊號已經和LCD數字的display()槽連線起來了,當訊號被廣播的時候,這個槽就被呼叫了。這兩個物件中的任何一個都不知道對方。這就是元件程式設計的本質。
槽是和普通C++成員函式的方式不同,但有著普通C++成員函式的方位規則。
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qvbox.h>
class MyWidget : public QVBox
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};
MyWidget::MyWidget( QWidget *parent, const char *name )
: QVBox( parent, name )
{
QPushButton *quit = new QPushButton( "Quit", this, "quit" );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );
connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );
QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 0 );
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
相關文章
- Qt入門(14)——父視窗部件和子視窗部件QT
- Qt入門(15)——使用視窗部件QT
- Qt入門(19)——自定義視窗部件QT
- QT中 視窗部件的 背景圖片 的設定QT
- Qt入門(17)——組裝複雜的控制元件QT控制元件
- Qt視窗居中QT
- QT視窗類QT
- Tkinter (20) 頂層視窗部件 Toplevel
- qt 視窗預設居中QT
- qt視窗居中顯示QT
- Qt TCP (小型聊天視窗)QTTCP
- Go Qt5 建立空白視窗、視窗居中及關閉視窗事件GoQT事件
- QT入門QT
- Qt 佈局管理 - 停靠視窗QT
- QT快速入門QT
- Qt入門(11)——Qt外掛QT
- Qt 設定視窗居中顯示QT
- Qt5:視窗居中顯示QT
- Qt視窗螢幕居中顯示QT
- SQL輕鬆入門(5):視窗函式SQL函式
- AutoCAD快速入門(二):圖形視窗
- 【QT】QT如何讓視窗放置在螢幕正中間QT
- Qt的視窗背景及視窗風格統一與煥膚QT
- Qt+ECharts開發筆記(二):Qt視窗動態調整大小,使ECharts跟隨Qt視窗大小變換QTEcharts筆記
- 利用”視窗小部件“擴充套件 Lotus Symphony 應用套件
- Qt入門(12)——Qt國際化QT
- Qt入門(13)——Qt的呼叫退出QT
- Qt入門(20)——Qt模組簡介QT
- Qt中設定視窗居中顯示QT
- QT 讓視窗(或控制元件)居中QT控制元件
- SDL3 入門(2):第一個視窗
- Qt Quick 如何入門?QTUI
- Qt入門之概述QT
- qt的無邊框視窗支援拖拽、Aero Snap、視窗陰影等特性QT
- 開源專案 Qt Esay Designer (Qt視窗設計器)QT
- Qt 讓彈出的視窗居中顯示QT
- qt設定視窗在桌面居中顯示QT
- Qt視窗在螢幕上居中顯示QT