QT学习笔记——06-Day15_C++_QT
在學習QT總結了筆記,并分享出來。有問題請及時聯(lián)系博主:Alliswell_WP,轉載請注明出處。
06-Day15_C++_QT
目錄:
一、QMainWindow
1、QMainWindow菜單欄和工具欄
2、QMainWindow狀態(tài)欄、鉚接部件、核心部件
3、資源文件
二、對話框QDialog
1、對話框——模態(tài)和非模態(tài)
2、QMessageBox使用
3、標準對話框-顏色對話框和文件對話框
三、布局管理器
》登錄窗口布局
四、常用控件
1、常用控件——按鈕組
2、ListWidget控件使用
3、TreeWidgetItem使用
4、QTableWidget控件使用
5、其他常用控件
五、總結
?
一、QMainWindow
1、QMainWindow菜單欄和工具欄
新建工程:選擇“QMainWindow”,去掉勾選“顯示主界面”
mainwindow.cpp構建如下
1 #include "mainwindow.h"2 #include<QMenuBar>3 #include<QToolBar>4 5 MainWindow::MainWindow(QWidget *parent)6 : QMainWindow(parent)7 {8 resize(600, 400);9 10 //包含菜單欄,只能有一個 11 QMenuBar* bar = menuBar(); 12 //將菜單欄放入到窗口中 13 this->setMenuBar(bar); 14 15 //創(chuàng)建文件菜單 16 QMenu* fileMenu = bar->addMenu("文件"); 17 QMenu* editMenu = bar->addMenu("編輯"); 18 19 //添加菜單欄 20 QAction* newAction = fileMenu->addAction("新建"); 21 //添加分割線 22 fileMenu->addSeparator(); 23 QAction* openAction = fileMenu->addAction("打開"); 24 25 //工具欄,可以有多個 26 QToolBar* toolBar = new QToolBar(this); 27 addToolBar(Qt::LeftToolBarArea, toolBar);//默認??糠秶?28 29 //只允許左右側???30 toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); 31 32 //設置浮動 33 toolBar->setFloatable(false); 34 35 //設置移動(總開關) 36 toolBar->setMovable(false); 37 38 //工具欄添加菜單欄 39 toolBar->addAction(newAction); 40 //添加分割線 41 toolBar->addSeparator(); 42 toolBar->addAction(openAction); 43 44 } 45 46 MainWindow::~MainWindow() 47 { 48 49 }2、QMainWindow狀態(tài)欄、鉚接部件、核心部件
?注意:可以有一個一般為set...,多個的為add...。
1 #include "mainwindow.h"2 #include<QMenuBar>3 #include<QToolBar>4 #include<QLabel>5 #include<QStatusBar>6 #include<QDockWidget>7 #include<QTextEdit>8 9 MainWindow::MainWindow(QWidget *parent) 10 : QMainWindow(parent) 11 { 12 resize(600, 400); 13 14 //包含菜單欄,只能有一個 15 QMenuBar* bar = menuBar(); 16 //將菜單欄放入到窗口中 17 this->setMenuBar(bar); 18 19 //創(chuàng)建文件菜單 20 QMenu* fileMenu = bar->addMenu("文件"); 21 QMenu* editMenu = bar->addMenu("編輯"); 22 23 //添加菜單欄 24 QAction* newAction = fileMenu->addAction("新建"); 25 //添加分割線 26 fileMenu->addSeparator(); 27 QAction* openAction = fileMenu->addAction("打開"); 28 29 //工具欄,可以有多個 30 QToolBar* toolBar = new QToolBar(this); 31 addToolBar(Qt::LeftToolBarArea, toolBar);//默認停靠范圍 32 33 //只允許左右側???34 toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); 35 36 //設置浮動 37 toolBar->setFloatable(false); 38 39 //設置移動(總開關) 40 toolBar->setMovable(false); 41 42 //工具欄添加菜單欄 43 toolBar->addAction(newAction); 44 //添加分割線 45 toolBar->addSeparator(); 46 toolBar->addAction(openAction); 47 48 //狀態(tài)欄,只能有一個 49 QStatusBar* stBar = statusBar(); 50 setStatusBar(stBar); 51 QLabel* label = new QLabel("左側提示信息", this); 52 stBar->addWidget(label);//添加提示信息到左側 53 54 QLabel* label2 = new QLabel("右側提示信息", this); 55 stBar->addPermanentWidget(label2); 56 57 //鉚接部件(浮動窗口) 58 QDockWidget* dock = new QDockWidget; 59 //添加鉚接部件到窗口中 60 addDockWidget(Qt::BottomDockWidgetArea, dock); 61 62 //設置??糠秶?63 dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); 64 65 66 //核心部件 67 QTextEdit* edit = new QTextEdit;//文本編輯框 68 setCentralWidget(edit); 69 70 71 72 73 } 74 75 MainWindow::~MainWindow() 76 { 77 78 }3、資源文件
新建工程:選擇“QMainWindow”,勾選“顯示主界面”(默認勾選)
在mainwindow.ui中添加“文件”(可直接設置中文),然后添加“新建”和“打開”(先設置英文,后改中文)
在mainwindow.cpp下更改:
1 #include "mainwindow.h"2 #include "ui_mainwindow.h"3 4 MainWindow::MainWindow(QWidget *parent) :5 QMainWindow(parent),6 ui(new Ui::MainWindow)7 {8 ui->setupUi(this);9 10 //通過ui尋找控件,絕對地址,缺點:給別人后會找不到文件 11 //ui->actionNew->setIcon(QIcon("D:/WorkSpace/QT/day01/02_Source/Image/Luffy.png")); 12 13 //1.添加資源文件到項目中(images文件夾放到項目文件夾下) 14 //2.在項目處右鍵選中“添加新文件”,選擇“Qt”,“Qt Resource File”,確定;取名稱(如:res),點擊下一步;(會添加一個res.qrc)點擊完成 15 //3.打開res.qrc(右鍵點擊“Open in Editor”),然后第一步添加“前綴”(如:/),第二步添加“文件”(選中所有照片),先運行下項目,這樣左側項目窗口res.qrc下"/文件夾"下會出現所有圖片 16 //4.使用資源文件“:+ 前綴名 + 文件名” 17 ui->actionNew->setIcon(QIcon(":/Image/Luffy.png")); 18 ui->actionOpen->setIcon(QIcon(":/Image/OnePiece.png")); 19 20 21 } 22 23 MainWindow::~MainWindow() 24 { 25 delete ui; 26 }?
二、對話框QDialog
有些低版本的Qt不兼容,需要在 文件名.pro 的最后一行添加:CONFIG += c++11
1、對話框——模態(tài)和非模態(tài)
新建工程:選擇“QMainWindow”,勾選“顯示主界面”(默認勾選)
在mainwindow.ui中添加“文件”(可直接設置中文),然后添加“新建”和“打開”(先設置英文,后改中文)
在mainwindow.cpp下更改:
1 #include "mainwindow.h"2 #include "ui_mainwindow.h"3 #include<QDebug>4 #include<QDialog>5 6 MainWindow::MainWindow(QWidget *parent) :7 QMainWindow(parent),8 ui(new Ui::MainWindow)9 { 10 ui->setupUi(this); 11 12 //點擊新建菜單欄,彈出對話框 13 connect(ui->actionNew, &QAction::triggered, this, [=](){ 14 //對話框有兩種 15 //模態(tài)對話框(不可以對其他窗口操作) 非模態(tài)對話框(可以對其他窗口操作) 16 17 //模態(tài)對話框 18 // QDialog dlg(this); 19 // dlg.resize(200, 100); 20 // dlg.exec();//阻塞 21 //qDebug() << "彈出對話框!"; 22 23 24 //非模態(tài)對話框創(chuàng)建 25 //QDialog dlg2(this);//創(chuàng)建到棧上,一閃而過 26 QDialog* dlg2 = new QDialog(this); 27 dlg2->resize(200, 100); 28 dlg2->show(); 29 //需要設置屬性dlg2,創(chuàng)建到堆上,小窗口點擊叉子不會釋放(只有點擊大窗口時才自動釋放),所以需要設置dlg2->setAttribute(Qt::WA_DeleteOnClose); 55 30 dlg2->setAttribute(Qt::WA_DeleteOnClose); 31 32 }); 33 34 } 35 36 MainWindow::~MainWindow() 37 { 38 delete ui; 39 }2、QMessageBox使用
在mainwindow.cpp下更改:
1 #include "mainwindow.h"2 #include "ui_mainwindow.h"3 #include<QDebug>4 #include<QDialog>5 #include<QMessageBox>6 7 MainWindow::MainWindow(QWidget *parent) :8 QMainWindow(parent),9 ui(new Ui::MainWindow) 10 { 11 ui->setupUi(this); 12 13 //點擊新建菜單欄,彈出對話框 14 connect(ui->actionNew, &QAction::triggered, this, [=](){ 15 //對話框有兩種 16 //模態(tài)對話框(不可以對其他窗口操作) 非模態(tài)對話框(可以對其他窗口操作) 17 18 //模態(tài)對話框 19 // QDialog dlg(this); 20 // dlg.resize(200, 100); 21 // dlg.exec();//阻塞 22 //qDebug() << "彈出對話框!"; 23 24 25 //非模態(tài)對話框創(chuàng)建 26 //QDialog dlg2(this);//創(chuàng)建到棧上,一閃而過 27 // QDialog* dlg2 = new QDialog(this); 28 // dlg2->resize(200, 100); 29 // dlg2->show(); 30 // //需要設置屬性dlg2 31 // dlg2->setAttribute(Qt::WA_DeleteOnClose); 32 33 //使用標準對話框QMessageBox 34 //錯誤對話框 35 //QMessageBox::critical(this, "錯誤!", "critical"); 36 //信息對話框 37 //QMessageBox::information(this, "信息", "info"); 38 39 //詢問對話框 40 //參數1:父親;參數2:標題;參數3:提示內容;參數4:按鍵類型;參數5:關聯(lián)回車的按鍵 41 // if(QMessageBox::Save == QMessageBox::question(this, "問題", "question", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel)) 42 // { 43 // qDebug() << "點擊的是保存"; 44 // } 45 // else 46 // { 47 // qDebug() << "點擊的是取消"; 48 // } 49 50 //警告對話框 51 QMessageBox::warning(this, "警告!", "warning"); 52 53 }); 54 55 } 56 57 MainWindow::~MainWindow() 58 { 59 delete ui; 60 }3、標準對話框-顏色對話框和文件對話框
在mainwindow.cpp下更改:
1 #include "mainwindow.h"2 #include "ui_mainwindow.h"3 #include<QDebug>4 #include<QDialog>5 #include<QMessageBox>6 #include<QColorDialog>7 #include<QFileDialog>8 9 MainWindow::MainWindow(QWidget *parent) : 10 QMainWindow(parent), 11 ui(new Ui::MainWindow) 12 { 13 ui->setupUi(this); 14 15 //點擊新建菜單欄,彈出對話框 16 connect(ui->actionNew, &QAction::triggered, this, [=](){ 17 //對話框有兩種 18 //模態(tài)對話框(不可以對其他窗口操作) 非模態(tài)對話框(可以對其他窗口操作) 19 20 //模態(tài)對話框 21 // QDialog dlg(this); 22 // dlg.resize(200, 100); 23 // dlg.exec();//阻塞 24 //qDebug() << "彈出對話框!"; 25 26 27 //非模態(tài)對話框創(chuàng)建 28 //QDialog dlg2(this);//創(chuàng)建到棧上,一閃而過 29 // QDialog* dlg2 = new QDialog(this); 30 // dlg2->resize(200, 100); 31 // dlg2->show(); 32 // //需要設置屬性dlg2 33 // dlg2->setAttribute(Qt::WA_DeleteOnClose); 34 35 //使用標準對話框QMessageBox 36 //錯誤對話框 37 //QMessageBox::critical(this, "錯誤!", "critical"); 38 //信息對話框 39 //QMessageBox::information(this, "信息", "info"); 40 41 //詢問對話框 42 //參數1:父親;參數2:標題;參數3:提示內容;參數4:按鍵類型;參數5:關聯(lián)回車的按鍵 43 // if(QMessageBox::Save == QMessageBox::question(this, "問題", "question", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel)) 44 // { 45 // qDebug() << "點擊的是保存"; 46 // } 47 // else 48 // { 49 // qDebug() << "點擊的是取消"; 50 // } 51 52 //警告對話框 53 // QMessageBox::warning(this, "警告!", "warning"); 54 55 //選擇顏色對話框 56 // QColor color = QColorDialog::getColor(QColor(255, 0, 0)); 57 // qDebug() << color.red() << color.green() << color.blue(); 58 59 60 //打開文件對話框 61 QString path = QFileDialog::getOpenFileName(this, "打開文件", "C:\\Users\\Administrator\\Desktop", "(*.txt *.png)"); 62 qDebug() << path; 63 64 }); 65 66 } 67 68 MainWindow::~MainWindow() 69 { 70 delete ui; 71 }?
三、布局管理器
》登錄窗口布局
新建工程:選擇“QWidget”,勾選“顯示主界面”(默認勾選)
1)利用Widget做容器,容器內部進行水平布局 和 垂直布局
2)靈活運用彈簧
3)設置屬性,間隙,默認widget和控件之間有9像素的間隙
4)垂直策略
?
四、常用控件
1、常用控件——按鈕組
1)PushButton按鈕組
2)ToolButton工具按鈕,多用于顯示圖片,ToolButtonStyle修改風格,autoRaise透明風格
3)RadioButton單選 setChecked(true)——默認選中
4)checkBox多選,statechage——獨特的信號
新建工程:選擇“QWidget”,勾選“顯示主界面”(默認勾選)
先在widget.ui中添加按鈕!
在widget.cpp中更改:
1 #include "widget.h"2 #include "ui_widget.h"3 #include<QDebug>4 5 Widget::Widget(QWidget *parent) :6 QWidget(parent),7 ui(new Ui::Widget)8 {9 ui->setupUi(this); 10 11 12 //單選按鈕,默認選中:男 13 ui->rBtnMan->setChecked(true); 14 15 //點擊女的,就打印選中了 16 connect(ui->rBtnWoman, &QRadioButton::clicked,[=](){ 17 qDebug() << "選中女的了"; 18 }); 19 20 //多選框,選中后打印內容 21 //選中2,未選中0(tristate——1狀態(tài),半選中) 22 connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){ 23 qDebug() << state; 24 }); 25 26 } 27 28 Widget::~Widget() 29 { 30 delete ui; 31 }2、ListWidget控件使用
1)QListWidgetItem 每個條目,每一個Item項目
2)item可以設置對齊方式
3)item->setTextAlignment(Qt::AlignHCenter);居中對齊
4)一次性的將所有內容添加QStringList
5)addItems(QStringList)
先在widget.ui中的“Item Widgets(Item-Based)”中添加List Widget!
在widget.cpp中更改:
1 #include "widget.h"2 #include "ui_widget.h"3 #include<QDebug>4 5 Widget::Widget(QWidget *parent) :6 QWidget(parent),7 ui(new Ui::Widget)8 {9 ui->setupUi(this); 10 11 12 //單選按鈕,默認選中:男 13 ui->rBtnMan->setChecked(true); 14 15 //點擊女的,就打印選中了 16 connect(ui->rBtnWoman, &QRadioButton::clicked,[=](){ 17 qDebug() << "選中女的了"; 18 }); 19 20 //多選框,選中后打印內容 21 //選中2,未選中0(tristate——1狀態(tài)) 22 connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){ 23 qDebug() << state; 24 }); 25 26 27 //利用listWidget寫詩 28 // QListWidgetItem* item = new QListWidgetItem("鋤禾日當午"); 29 30 // //設置對齊方式 31 // item->setTextAlignment(Qt::AlignHCenter); 32 // ui->listWidget->addItem(item); 33 34 //QStringList——QList<QString> 缺點:無法對齊 35 QStringList list; 36 list << "鋤禾日當午" << "汗滴禾下土" << "誰知盤中餐" << "粒粒皆辛苦"; 37 ui->listWidget->addItems(list); 38 39 //匿名對象,也可以直接使用 40 //ui->listWidget->addItems(QStringList()<< "鋤禾日當午" << "汗滴禾下土" << "誰知盤中餐" << "粒粒皆辛苦"); 41 42 43 44 } 45 46 Widget::~Widget() 47 { 48 delete ui; 49 }?
3、TreeWidgetItem使用
制作下圖:
新建工程:選擇“QWidget”,勾選“顯示主界面”(默認勾選)
先在widget.ui中的“Item Widgets(Item-Based)”中添加Tree Widget!
在widget.cpp中更改:
1 #include "widget.h"2 #include "ui_widget.h"3 4 Widget::Widget(QWidget *parent) :5 QWidget(parent),6 ui(new Ui::Widget)7 {8 ui->setupUi(this);9 10 //treeWidget控件使用 11 //添加頭 12 ui->treeWidget->setHeaderLabels(QStringList()<< "英雄姓名" << "英雄介紹"); 13 //添加項目 14 QTreeWidgetItem* liItem = new QTreeWidgetItem(QStringList()<< "力量"); 15 QTreeWidgetItem* minItem = new QTreeWidgetItem(QStringList()<< "敏捷"); 16 QTreeWidgetItem* zhiItem = new QTreeWidgetItem(QStringList()<< "智力"); 17 18 //添加頂層項目 19 ui->treeWidget->addTopLevelItem(liItem); 20 ui->treeWidget->addTopLevelItem(minItem); 21 ui->treeWidget->addTopLevelItem(zhiItem); 22 23 QStringList heroL1; 24 QStringList heroL2; 25 QStringList heroM1; 26 QStringList heroM2; 27 QStringList heroZ1; 28 QStringList heroZ2; 29 30 31 heroL1 << "剛被豬" << "前排坦克,能在吸收傷害的同時造成可觀的范圍輸出"; 32 heroL2 << "船長" << "前排坦克,能肉能輸出能控場的全能英雄"; 33 34 heroM1 << "月騎" << "中排物理輸出,可以使用分裂利刃攻擊多個目標"; 35 heroM2 << "小魚人" << "前排戰(zhàn)士,擅長偷取敵人的屬性來增強自身戰(zhàn)力"; 36 37 heroZ1 << "死靈法師" << "前排法師坦克,魔法抗性較高,擁有治療技能"; 38 heroZ2 << "巫醫(yī)" << "后排輔助法師,可以使用奇特的巫術詛咒敵人與治療隊友"; 39 40 //追加子項目,子項也是QTreeWidgetItem 41 QTreeWidgetItem* li1 = new QTreeWidgetItem(heroL1); 42 liItem->addChild(li1); 43 QTreeWidgetItem* li2 = new QTreeWidgetItem(heroL2); 44 liItem->addChild(li2); 45 QTreeWidgetItem* Min1 = new QTreeWidgetItem(heroM1); 46 minItem->addChild(Min1); 47 QTreeWidgetItem* Min2 = new QTreeWidgetItem(heroM2); 48 minItem->addChild(Min2); 49 QTreeWidgetItem* Zhi1 = new QTreeWidgetItem(heroZ1); 50 zhiItem->addChild(Zhi1); 51 QTreeWidgetItem* Zhi2 = new QTreeWidgetItem(heroZ2); 52 zhiItem->addChild(Zhi2); 53 54 } 55 56 Widget::~Widget() 57 { 58 delete ui; 59 }?
4、QTableWidget控件使用
制作下圖:
新建工程:選擇“QWidget”,勾選“顯示主界面”(默認勾選)
先在widget.ui中的“Item Widgets(Item-Based)”中添加Table Widget!
然后添加兩個按鈕“添加趙云”、“刪除趙云”
1)設置列數setColumnCount
2)設置水平頭setHorizontalHeaderLabel
3)設置行數setRowCount
4)設置正文setItem(行數,列數,具體內容)
5)添加趙云,刪除趙云
在widget.cpp中更改:
1 #include "widget.h"2 #include "ui_widget.h"3 #include<QMessageBox>4 5 Widget::Widget(QWidget *parent) :6 QWidget(parent),7 ui(new Ui::Widget)8 {9 ui->setupUi(this); 10 11 //QTableWidget控件使用 12 //告訴控件,一共有多少列 13 //ui->tableWidget->setColumnCount(3); 14 //設置水平頭 15 //ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性別" << "年齡"); 16 QStringList list; 17 list << "姓名" << "性別" << "年齡"; 18 ui->tableWidget->setColumnCount(list.size()); 19 ui->tableWidget->setHorizontalHeaderLabels(list); 20 21 //設置行數 22 ui->tableWidget->setRowCount(5); 23 24 //設置正文 25 //ui->tableWidget->setItem(0, 0, new QTableWidgetItem("亞瑟")); 26 27 //準備數據 28 QStringList namelist; 29 namelist << "亞瑟" << "妲己" << "安其拉" << "東皇" << "李白"; 30 31 QList<QString>sexList; 32 sexList << "男" << "女" << "女" << "男" << "男"; 33 34 for(int i = 0; i < 5; i++) 35 { 36 int col = 0; 37 ui->tableWidget->setItem(i,col++, new QTableWidgetItem(namelist[i])); 38 //添加性別 39 ui->tableWidget->setItem(i,col++, new QTableWidgetItem(sexList.at(i))); 40 //添加年齡 41 //int轉QString:number 42 ui->tableWidget->setItem(i,col++, new QTableWidgetItem(QString::number(i+18))); 43 44 } 45 46 //點擊按鈕,添加趙云 47 connect(ui->addBtn, &QPushButton::clicked,[=](){ 48 49 //先判斷有沒有趙云,有不添加,沒有才添加 50 bool isEmpty = ui->tableWidget->findItems("趙云", Qt::MatchExactly).empty(); 51 52 if(isEmpty) 53 { 54 ui->tableWidget->insertRow(0); 55 ui->tableWidget->setItem(0,0, new QTableWidgetItem("趙云")); 56 ui->tableWidget->setItem(0,1, new QTableWidgetItem("男")); 57 ui->tableWidget->setItem(0,2, new QTableWidgetItem(QString::number(20))); 58 } 59 else 60 { 61 QMessageBox::warning(this, "警告!","趙云有了!"); 62 } 63 64 65 }); 66 67 //點擊按鈕,刪除趙云 68 connect(ui->delBtn,&QPushButton::clicked,[=](){ 69 70 bool isEmpty = ui->tableWidget->findItems("趙云", Qt::MatchExactly).empty(); 71 if(isEmpty) 72 { 73 QMessageBox::warning(this, "警告!","趙云沒有了!"); 74 } 75 else 76 { 77 //先找到趙云所在的行 78 int row = ui->tableWidget->findItems("趙云", Qt::MatchExactly).first()->row(); 79 //找到行數,刪除掉 80 ui->tableWidget->removeRow(row); 81 82 } 83 84 85 86 }); 87 88 89 } 90 91 Widget::~Widget() 92 { 93 delete ui; 94 }?
5、其他常用控件
新建工程:選擇“QWidget”,勾選“顯示主界面”(默認勾選)
1)stackWidget??丶O置當前索引setCurrentIndex(0)
2)下拉框——addItem、setCurrentText()
3)利用QLabel顯示gif圖片和普通圖片
先在widget.ui中的“Item Widgets(Item-Based)”中添加相應的控件!
在widget.cpp中更改:
1 #include "widget.h"2 #include "ui_widget.h"3 #include<QMovie>4 5 Widget::Widget(QWidget *parent) :6 QWidget(parent),7 ui(new Ui::Widget)8 {9 ui->setupUi(this); 10 11 //設置默認選中第0項 12 ui->stackedWidget->setCurrentIndex(0); 13 14 //stackWidget 15 connect(ui->btnScroll, &QPushButton::clicked,[=](){ 16 ui->stackedWidget->setCurrentIndex(0); 17 }); 18 19 connect(ui->btnTab, &QPushButton::clicked,[=](){ 20 ui->stackedWidget->setCurrentIndex(1); 21 }); 22 23 connect(ui->btnTool, &QPushButton::clicked,[=](){ 24 ui->stackedWidget->setCurrentIndex(2); 25 }); 26 27 //下拉框使用 28 ui->comboBox->addItem("奔馳"); 29 ui->comboBox->addItem("寶馬"); 30 ui->comboBox->addItem("拖拉機"); 31 32 //點擊拖拉機按鈕 33 connect(ui->btnChoose,&QPushButton::clicked,[=](){ 34 ui->comboBox->setCurrentText("拖拉機"); 35 }); 36 37 //利用QLabel顯示圖片 38 ui->img->setPixmap(QPixmap(":/Image/Luffy.png")); 39 40 //利用QLabel顯示gif圖片 41 QMovie* movie = new QMovie(":/Image/mario.gif"); 42 ui->movie->setMovie(movie); 43 //播放gif 44 movie->start(); 45 46 47 } 48 49 Widget::~Widget() 50 { 51 delete ui; 52 }?
?
五、總結
1?? ?QMainWindow
1.1?? ?菜單欄 QMenuBar * bar = MenuBar()? 只能最多有一個
1.1.1?? ?把這個欄添加到 窗口中 setMenuBar
1.1.2?? ?添加菜單 addMenu(文件)
1.1.3?? ?文件里添加菜單項 addAction(新建) 返回QAction
1.1.4?? ?添加分隔符 addSeparator
1.2?? ?工具欄 可以有多個
1.2.1?? ?tBar =? new QToolBar
1.2.2?? ?addToolBar( 默認??课恢?#xff0c;tBar)
1.2.3?? ?設置 ???、浮動、移動
1.2.4?? ?添加菜單項
1.3?? ?狀態(tài)欄 statusBar? 只能一個
1.3.1?? ?左側添加
1.3.2?? ?右側添加
1.4?? ?鉚接部件 可以多個
1.4.1?? ?QDockWidget
1.4.2?? ?addDockWidget(默認位置,。。)
1.4.3?? ?設置后期的??课恢?br />1.5?? ?核心部件? 只能一個
1.5.1?? ?setCentralWidget
2?? ?添加資源文件
2.1?? ?首先將資源導入到項目中
2.2?? ?右鍵項目 -? 添加新文件 – Qt? - Qt Resource File
2.3?? ?給資源起名稱 res
2.4?? ?Qt會生成res.qrc 文件
2.5?? ?右鍵res.qrc? open in Editor
2.6?? ?添加前綴
2.7?? ?添加文件
2.8?? ?使用 “ : + 前綴名 + 文件名 ”
2.9?? ?可以設置別名,但是不建議,因為設置別名,原來的方式就不可用了
3?? ?對話框
3.1?? ?模態(tài)對話框
3.1.1?? ?Dialog dlg
3.1.2?? ?dlg.exec() 阻塞功能
3.2?? ?非模態(tài)對話框
3.2.1?? ?Dialog dlg
3.2.2?? ?dlg.show() 會一閃而過 所以創(chuàng)建在堆上
3.2.3?? ?new dlg dlg->show()
3.2.4?? ?設置屬性 55號 setAttribute(Qt::WA_DeleteOnClose)
4?? ?QMessageBox
4.1?? ?錯誤、信息、警告、問題
4.2?? ?問題 5個參數
4.2.1?? ?1 父親 2 標題 3 顯示內容 4 按鍵類型 5 默認關聯(lián)回車按鍵
5?? ?QFileDialog ?
5.1?? ?getOpenFileName(父親,標題,默認路徑,過濾文件格式)
5.2?? ?返回值是文件路徑
6?? ?QColorDialog
6.1?? ?getColor( 默認色 QColor(r,g,b))
6.2?? ?返回值 QColor
7?? ?界面布局
7.1?? ?登陸窗口
7.2?? ?水平布局 和 垂直布局
7.3?? ?默認widget和控件之間有9像素的間隙
7.4?? ?靈活運用彈簧
8?? ?控件
8.1?? ?按鈕組
8.1.1?? ?QPushButton 可以加Icon
8.1.2?? ?QToolButton 主要顯示Icon,想顯示圖片和文字 ,修改屬性toolButtonStyle
8.1.2.1?? ?自帶效果 透明效果 autoRaise
8.1.3?? ?QRadioButton
8.1.3.1?? ?setChecked 設置默認選中
8.1.3.2?? ?監(jiān)聽clicked信號
8.1.4?? ?QCheckButton
8.1.4.1?? ?statusChanged 狀態(tài)改變 0 未選中 1 半選 2 全選
8.2?? ?ListWidget
8.2.1?? ?QListWidgetItem * item = new … (“詩詞”)
8.2.2?? ?ui->listWidget->addItem(item);
8.2.3?? ?設置對齊方式 item->setTextAlignment(Qt::AlignHCenter);
8.2.4?? ?addItems( QStringlist)
8.3?? ?TreeWidget
8.3.1?? ?設置頭
8.3.2?? ?ui->treeWidget->setHeaderLabels(QStringList() << "英雄"<<"英雄介紹");
8.3.2.1?? ?設置具體內容
8.3.3?? ?創(chuàng)建頂層的item
8.3.3.1?? ?QTreeWidgetItem * liItem = new …
8.3.3.2?? ?ui->treeWidget->addTopLevelItem(liItem);
8.3.4?? ?設置子節(jié)點
8.3.4.1?? ?addChild()
8.4?? ?TableWidget
8.4.1?? ?設置列數
8.4.2?? ?設置頭 姓名 性別 年齡
8.4.3?? ?設置行數
8.4.4?? ?設置正文? setItem(row,col,QTableWidgetItem)
8.4.5?? ?添加趙云
8.4.5.1?? ?判斷是否為空
8.4.5.2?? ?為空 添加 insertRow
8.4.6?? ?刪除趙云
8.4.6.1?? ?判斷是否為空
8.4.6.2?? ?先確定趙云所在的row
8.4.6.3?? ?removeRow
8.5?? ?其他常用控件
8.5.1?? ?stackedwidget 棧容器
8.5.1.1?? ?設置所以 setCurrentIndex
8.5.2?? ?下拉框
8.5.2.1?? ?addItem添加項目
8.5.3?? ?利用QLabel顯示圖片
8.5.3.1?? ?setPixmap(QPixmap(“文件路徑”))
8.5.4?? ?利用QLabel顯示gif圖片
8.5.4.1?? ??? ??? ?QMovie * movie = new QMovie(":/Image/mario.gif");
8.5.4.2?? ???? ui->label_gif->setMovie(movie);
8.5.4.3?? ???? movie->start();
?
?
在學習QT總結了筆記,并分享出來。有問題請及時聯(lián)系博主:Alliswell_WP,轉載請注明出處。
總結
以上是生活随笔為你收集整理的QT学习笔记——06-Day15_C++_QT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构课程设计,迷宫问题求解
- 下一篇: s3c2440移植MQTT