Qt窗口部件
窗口定義
Qt中把沒有嵌入其他部件中的部件稱為窗口。
<pre><code>
QWidget *widget = new QWidget();//新建QWidget類對象,默認parent參數是0,所以它是個窗口</code></pre>
窗口類型和窗口標志
QWidget的構造函數有二個參數,QWidget *parent = 0
,Qt::WindowFlags f = 0
,后面的f參數是Qt::WindowFlags類型,是一個枚舉類型,分為窗口類型(WindowType)和窗口標志(WindowFlags)。前者可以定義窗口的類型,比如f=0表明了使用Qt::Widget一項。
更改窗口類型
QWidget *widget = new QWidget(0,Qt::Dialog);
QLabel *label = new QLabel(0,Qt::SplashScreen);
窗口類型的作用是更改窗口的標題欄和邊框,而且可以和窗口標志進行位運算。
QWidget *widget = new QWidget(0,Qt::Dialog | Qt::FramelessWindowHint);//產生沒有邊框的窗口
QLabel *label = new QLabel(0,Qt::SplashScreen | Qt::WindowStayOnTopHint);//使該窗口停留在其他窗口上方
setWindowState()設置窗口狀態,Qt::WindowFullScreen全屏顯示。
窗口幾何布局
窗口的大小和位置,根據是否包含邊框和標題欄二種情況
QRect geometry = widget.geometry();
QRect geometry = widget.frameGeometry();(包含邊框)
QRect類型就是一個矩形,他的形式是(x,y,寬,高)。
對話框QDialog
模態和非模態對話框:按照運行對話框時是否可以和該程序其他窗口進行交互來劃分
QDialog dialog(this); dialog.exec();
(模態對話框)
QDialog *dialog = new QDialog(this); dialog->setModal(true);//模態對話框 dialog->show();
//非模態對話框,show()之后把控制權交給調用者
與setModal()
函數相似的還有setWindowModality()
Qt::NonModal(不阻塞任何窗口,就是非模態),Qt::WindowModal(阻塞他的父窗口和所有祖先窗口以及他們子窗口),Qt::ApplicationModal(阻塞整個應用程序所有窗口),setModal()
默認設置的是Qt::ApplicationModal
accept()
函數是QDialog里的一個槽。一個使用exec()
函數實現的模態對話框執行了這個槽就會隱藏這個對話框,并返回QDialog::Accepted
標準對話框
QColorDialog 顏色對話框
QColor color = QColorDialog::getColor(Qt::red, this, "顏色對話框");
- - -
QColorDialog dialog(Qt::red,this);
dialog.setOption(QColorDialog::ShowAlphaChannel);//顯示alpha選項
dialog.exec();
QColor color = dialog.currentColor();
QFileDialog文件對話框
QString fileName = QFileDialog::getOpenFileName(this, "文件對話框", "F:", tr("圖片文件(*png *jpg);;文本文件(*txt)"));
QStringList fileNames = QFileDialog::getOpenFileNames(this,"文件對話框","F:",tr("圖片文件(*png*jpg)"));
QMessageBox消息對話框
提示對話框QMessageBox::information(this,"提示對話框","提示信息",QMessageBox::Ok);
警告對話框QMessageBox::warning();
錯誤對話框QMessageBox::critical();
QProgressDialog進度對話框
QFrame類族
QFrame
類是帶有邊框部件的基類,常見的有QLabel QLCDNumber QSplitter QStackedWidget QToolBox QAbstractScrollArea
QAbstractScorllArea是所有帶有滾動區域的部件類的抽象基類,使用他的方法是繼承實現該類,或者直接使用他的子類如:QTextEdit
QLabel
標簽QLabel用來顯示文本或者圖片
alignment屬性,文本居中顯示(AlignHCenter, AlignVCenter)。
標簽中使用圖片
ui->label->setPixmap(QPixmap("F:/logo.png");
QMovie *movie = new QMovie("F:/donghua.gif");
ui->label->setMovie(movie);
movie->start();```
(最好用資源管理器)
> 添加文件(Qt Resource File) 添加前綴 添加文件
###QLCDNumber
*smallDecimalPoint*顯示小數點
*digitCount*數字個數
*mode*數值進制
`display()`函數來設置要顯示的數值
###QStackWidget
`QStackWidget`類提供了一個部件棧,可以有多個見面,需要使用`QComboBox`或者`QListWidget`來選擇各個界面,listWidget部件的`currentRowChanged()`信號和stackWidget的`setCurrentIndex()`槽關聯
###QTollBox
類似QQ的抽屜列表,`currentItem Text`更改文本
`frameShape`部件外觀
###按鈕部件
Push Button,選中checkable屬性,使得他可以擁有“選中”和“為選中”二種狀態,flat屬性顯示按鈕邊框。
`QPushButton toggled(bool)`判斷按鈕是否被按下的槽函數
`QMenu *menu = new QMenu(this);
menu->addAction(QIcon(":/image/zoom-in.png"));
ui->pushBtn->setMenu(menu)`為按鈕添加下拉菜單
###QCheckBox、QRadioButton和QGroupBox
`QCheckBox`多選框
`QRadioButton`單選框
`QGroupBox`管理一組按鈕
選中按鈕的操作可以關聯stateChanged()信號和我們的槽,也可以使用isChecked()函數查看
###行編輯器
顯示模式:在echoMode屬性更改。
輸入掩碼:在inputMask屬性更改。
###數值設定框
有3個子類`QDateTimeEdit QSpinBox QDoubleSpinBox`
QDateTimeEdit `Time Edit Date Edit Date/Time Edit`,**displayFormat**"h:mm:ssA" **dateEdit**的calendarPopup可以彈出日歷設置日期
`ui->dataTimeEdit->setDateTime(QDateTime::currentDateTime());
`
**displayFormat**屬性“yyyy年MM月dd日 ddd HH時mm分ss秒”
###QSpinBox和QDoubleSpinBox
后綴屬性:suffix
###滑塊部件
sliderMoved(int)信號 setValue(int)槽