生活随笔
收集整理的這篇文章主要介紹了
QT学习回顾(二)界面布局及其控件设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QT學習回顧(二)
- (1)QMainWindow介紹
- (2)工具欄及狀態欄介紹
- (3)柳接部件、浮動窗口及核心部件介紹
- (4)資源文件添加及圖片應用
- (5)對話框介紹
- (6)界面布局
- (7)控件
(1)QMainWindow介紹
QMenuBar
*bar
= menuBar();setMenuBar(bar
);QMenu
*fileMenu
=bar
->addMenu("文件");QMenu
*editMenu
=bar
->addMenu("編輯");QAction
*newAction
=fileMenu
->addAction("新建");fileMenu
->addSeparator();QAction
*openAction
=fileMenu
->addAction("打開");
效果圖如下:
(2)工具欄及狀態欄介紹
QToolBar
*toolBar
=new QToolBar(this);addToolBar(Qt
::LeftToolBarArea
,toolBar
);toolBar
->setAllowedAreas(Qt
::LeftToolBarArea
|Qt
::RightToolBarArea
);toolBar
->setFloatable(false);toolBar
->addAction(newAction
);toolBar
->addSeparator();toolBar
->addAction(openAction
);QPushButton
*btn
=new QPushButton("aa",this);toolBar
->addWidget(btn
);QStatusBar
*stBar
=statusBar();setStatusBar(stBar
);
效果圖如下:
(3)柳接部件、浮動窗口及核心部件介紹
- 鉚接部件 浮動窗口 可以多個
- 設置核心部件 只能一個
QLabel
*label
=new QLabel("提示信息",this);stBar
->addWidget(label
);QLabel
*label2
=new QLabel("提示信息",this);stBar
->addPermanentWidget(label2
);QDockWidget
*dockWidget
=new QDockWidget("浮動",this);addDockWidget(Qt
::BottomDockWidgetArea
,dockWidget
);dockWidget
->setAllowedAreas(Qt
::TopDockWidgetArea
|Qt
::BottomDockWidgetArea
);QTextEdit
*edit
=new QTextEdit(this);setCentralWidget(edit
);
效果圖如下:
(4)資源文件添加及圖片應用
具體步驟:
- 將圖片文件 拷貝到項目位置下
- 右鍵項目->添加新文件 –> Qt - > Qt recourse File - >給資源文件起名 res 生成 res.qrc
- open in editor 編輯資源
- 添加前綴 添加文件
- 使用 “ : + 前綴名 + 文件名 ”
ui
->actionnew
->setIcon(QIcon(":/Image/Luffy.png"));ui
->actionopen
->setIcon(QIcon(":/Image/LuffyQ.png"));
效果圖如下:
(5)對話框介紹
QDialog
*dlg2
=new QDialog(this);dlg2
->resize(200,100);dlg2
->show();dlg2
->setAttribute(Qt
::WA_DeleteOnClose
);qDebug()<<"非模態創建";
- 消息對話框
- QMessageBox 靜態成員函數 創建對話框(錯誤、信息、提問、警告)
- 提問對話框中函數參數:
參數1 父親 參數2 標題 參數3 顯示內容 參數4 按鍵類型 參數5 默認關聯回車按鍵
if(QMessageBox
::Save
==QMessageBox::question(this,"ques","提問",QMessageBox
::Save
|QMessageBox
::Cancel
)){qDebug()<<"選擇的是保存";}else{qDebug()<<"選擇的是取消";}
bool flag
;QFont font
=QFontDialog::getFont(&flag
,QFont("華文彩云",36));qDebug()<<"字體:"<<font
.family()<<"字號:"<<font
.pointSize()<<"是否加粗:"<<font
.bold()<<"是否傾斜:"<<font
.italic();
(6)界面布局
- 實現登陸窗口
- 利用布局方式 給窗口進行美化
- 選取 widget 進行布局 ,水平布局、垂直布局、柵格布局
- 給用戶名、密碼、登陸、退出按鈕進行布局
- 默認窗口和控件之間 有9間隙,可以調整 layoutLeftMargin
- 利用彈簧進行布局
(7)控件
- 1、按鈕組和QListWidget 列表容器
- QPushButton 常用按鈕
- QToolButton 工具按鈕 用于顯示圖片,如圖想顯示文字,修改風格:toolButtonStyle , 凸起風格autoRaise
- radioButton 單選按鈕,設置默認 ui->rBtnMan->setChecked(true);
- checkbox多選按鈕,監聽狀態,2 選中 1 半選 0 未選中
- QListWidgetItem * item 一行內容
- ui->listWidget ->addItem ( item )
- 設置居中方式item->setTextAlignment(Qt::AlignHCenter);可以利用addItems一次性添加整個詩內容
ui
->rbtman
->setChecked(true);connect(ui
->rbtwoman
,&QRadioButton
::clicked
,[=](){qDebug()<<"選中女了";});connect(ui
->checkBox_4
,&QCheckBox
::stateChanged
,[=](int state
){qDebug()<<state
;});
QStringList list
;list
<<"鋤禾日當午"<<"汗滴禾下土"<<"誰知盤中餐"<<"粒粒皆辛苦";ui
->listWidget
->addItems(list
);
效果圖如下
- 2、QTreeWidget 樹控件
- 設置頭 ui->treeWidget->setHeaderLabels(QStringList()<< “英雄”<< “英雄介紹”);
- 創建根節點 QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< “力量”);
- 添加根節點 到 樹控件上 ui->treeWidget->addTopLevelItem(liItem);
- 添加子節點 liItem->addChild(l1);
ui
->treeWidget
->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹");QTreeWidgetItem
*liItem
=new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem
*minItem
=new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem
*zhiItem
=new QTreeWidgetItem(QStringList()<<"智力");ui
->treeWidget
->addTopLevelItem(liItem
);ui
->treeWidget
->addTopLevelItem(minItem
);ui
->treeWidget
->addTopLevelItem(zhiItem
);QStringList heroL1
;QStringList heroL2
;heroL1
<< "剛被豬" << "前排坦克,能在吸收傷害的同時造成可觀的范圍輸出";heroL2
<< "船長" << "前排坦克,能肉能輸出能控場的全能英雄";QStringList heroM1
;QStringList heroM2
;heroM1
<< "月騎" << "中排物理輸出,可以使用分裂利刃攻擊多個目標";heroM2
<< "小魚人" << "前排戰士,擅長偷取敵人的屬性來增強自身戰力";QStringList heroZ1
;QStringList heroZ2
;heroZ1
<< "死靈法師" << "前排法師坦克,魔法抗性較高,擁有治療技能";heroZ2
<< "巫醫" << "后排輔助法師,可以使用奇特的巫術詛咒敵人與治療隊友";QTreeWidgetItem
*l1
=new QTreeWidgetItem(heroL1
);QTreeWidgetItem
*l2
=new QTreeWidgetItem(heroL2
);liItem
->addChild(l1
);liItem
->addChild(l2
);QTreeWidgetItem
*m1
=new QTreeWidgetItem(heroM1
);QTreeWidgetItem
*m2
=new QTreeWidgetItem(heroM2
);minItem
->addChild(m1
);minItem
->addChild(m2
);QTreeWidgetItem
*z1
=new QTreeWidgetItem(heroZ1
);QTreeWidgetItem
*z2
=new QTreeWidgetItem(heroZ2
);zhiItem
->addChild(z1
);zhiItem
->addChild(z2
);
效果圖如下:
- 3、QTableWidget 表格控件
- 設置列數 ui->tableWidget->setColumnCount(3);
- 設置水平表頭 ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<“姓名”<< “性別”<< “年齡”);
- 設置行數 ui->tableWidget->setRowCount(5);
- 設置正文 ui->tableWidget->setItem(0,0, new QTableWidgetItem(“亞瑟”));
ui
->tableWidget
->setColumnCount(3);ui
->tableWidget
->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性別"<<"年齡");ui
->tableWidget
->setRowCount(5);
QStringList nameList
;nameList
<<"亞瑟"<<"趙云"<<"張飛"<<"關羽"<<"花木蘭";QList
<QString
>sexList
;sexList
<<"男"<<"男"<<"男"<<"女";for(int i
=0;i
<5;i
++){int col
=0;ui
->tableWidget
->setItem(i
,col
++,new QTableWidgetItem(nameList
[i
]));ui
->tableWidget
->setItem(i
,col
++,new QTableWidgetItem(sexList
.at(1)));ui
->tableWidget
->setItem(i
,col
++,new QTableWidgetItem(QString::number(i
+18)));}
效果圖如下:
- 4、其他控件
- stackedWidget 棧控件 ui->stackedWidget->setCurrentIndex(1);
- 下拉框 ui->comboBox->addItem(“奔馳”);
- QLabel 顯示圖片 ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));
- QLabel顯示動圖 gif圖片 ui->lbl_movie->setMovie(movie);movie->start();
ui
->stackedWidget
->setCurrentIndex(1);connect(ui
->btn_scrollArea
,&QPushButton
::clicked
,[=](){ui
->stackedWidget
->setCurrentIndex(1);});connect(ui
->btn_ToolBox
,&QPushButton
::clicked
,[=](){ui
->stackedWidget
->setCurrentIndex(2);});connect(ui
->btn_TabWidget
,&QPushButton
::clicked
,[=](){ui
->stackedWidget
->setCurrentIndex(0);});ui
->comboBox
->addItem("奔馳");ui
->comboBox
->addItem("寶馬");ui
->comboBox
->addItem("拖拉機");connect(ui
->btn_select
,&QPushButton
::clicked
,[=](){ui
->comboBox
->setCurrentText("拖拉機");});ui
->lbl_Image
->setPixmap(QPixmap(":/Image/butterfly.png"));QMovie
* movie
= new QMovie(":/Image/mario.gif");ui
->lbl_movie
->setMovie(movie
);movie
->start();
總結
以上是生活随笔為你收集整理的QT学习回顾(二)界面布局及其控件设计的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。