基礎部分
創建新項目:QWidget,QMainWindow,QDialog
QMainWindow繼承自QWidget,多了菜單欄;
QDialog繼承自QWidget,多了對話框
QMainWindow 菜單欄和工具欄:
Bar:
菜單欄:QMenuBar,菜單:QMenu
//重置窗口大小resize(600,400);//菜單欄創建(菜單欄最多只能有一個)QMenuBar * bar = menuBar();//將菜單欄放入到窗口中setMenuBar(bar);//創建菜單QMenu * filename= bar->addMenu("文件");QMenu * editname= bar->addMenu("編輯");QAction * newAction = filename->addAction("新建");//添加分割線filename->addSeparator();//增加子菜單的內容QAction * OpenAction = filename->addAction("打開");//設置中心部件 只能有一個(這個可加可不加)QTextEdit *edit = new QTextEdit(this);setCentralWidget(edit);
工具欄:QToolBar,
狀態欄:QStatusBar();
浮動窗口:QDockWidget 可以有多個
對話框:
消息對話框QMessage:錯誤對話框(critical),信息對話框(information),問題對話框(question),警告
選擇顏色(QColorDialog):
選擇文件或目錄(QFileDialog):
...還有幾個其他的標準對話框
按鈕組
pushButton 顯示文字
//lambda表達式(C++11特性):[](){}; connect(mybtn,&MyPushButton::clicked,[=](){this->close();});
//點擊新建按鈕,彈出對話框connect(ui->actionnew,&QAction::triggered,[=](){//對話框QDialog dlg(this);dlg.exec();});
ToolButton 可用來顯示圖片
單選: Radio Button
多選:check Box
(group box 可將選項button放在一起(單選/多選))
Item Views(Model-base)
是基于其他模組的,例如數據庫之類。不常用
Item Widgets (Item-base):
表格控件:
控件:QListWidget(圖片部件標注1的部分)
List Widget (分行顯示):每一行:QListWidgetItem ,然后加入(addItem)到ui的listwidget控件中
//利用ListWidget逐行顯示QListWidgetItem *item = new QListWidgetItem("one");//將第一行ui->listWidget->addItem(item);item->setTextAlignment(Qt::AlignHCenter);QStringList list;list<<"456"<<"7931"<<"46913";list.append("93");list.insert(6,"6666");ui->listWidget->addItems(list);
控件:QTreeWidget樹控件(圖片部件標注2的部分)
實現樹列介紹,
//利用TreeWidget樹控件使用ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹");QTreeWidgetItem * item_li = new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem * item_min = new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem * item_zhi = new QTreeWidgetItem(QStringList()<<"智力");//加載頂層的節點ui->treeWidget->addTopLevelItem(item_li);ui->treeWidget->addTopLevelItem(item_min);ui->treeWidget->addTopLevelItem(item_zhi);//追加子節點QStringList herpL1;herpL1<<"英雄1"<<"技能點1,技能點2";QTreeWidgetItem * L1 = new QTreeWidgetItem(herpL1);item_li->addChild(L1);
控件:QTableWidget控件(圖片部件標注3的部分)
//利用TableWidget控件使用(表格)//設置列數ui->tableWidget->setColumnCount(3);//設置水平表頭ui->tableWidget->setHorizontalHeaderLabels(QStringList ()<<"姓名"<<"性別"<<"年齡");//設置行數ui->tableWidget->setRowCount(5);//設置正文(第一行第一列)//ui->tableWidget->setItem(0,0,new QTableWidgetItem("人物1"));QStringList namelist;namelist<<"人物1"<<"人物2"<<"人物3"<<"人物4";QStringList sexlist;sexlist << "女1" <<"男1"<<"男1"<<"女2"; //此處使用"女1"for(int i=0;i<4;i++){int col=0;ui->tableWidget->setItem(i,col++,new QTableWidgetItem(namelist[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexlist[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));}
其他常用控件:(Containers容器)
Group Box 分組的部件(直接在ui中拖動設置即可)(一般設置頁面排版時用到,例如在單選/多選框)
Scroll Area 滾動的區域,滾動條(直接在ui中拖動設置即可)(圖片部件標注4的部分)
ToolBox 分頁(直接在ui中拖動設置即可)(圖片部件標注5的部分)
Tab Widget 分頁(直接在ui中拖動設置即可)(圖片部件標注6的部分)
stacked widget 切換頁面(調試時直接在ui中拖動設置即可,但是使用調用時需使用棧空間的索引進行切換),(圖片部件標注7的部分)
例如:開發中有可識別的切換按鈕,但是程序中切換需要通過新增按鈕來進行切換(setCurrentIndex)
//棧控件的使用//設置默認值頁面ui->stackedWidget->setCurrentIndex(0);connect(ui->pushButton_stackW_1,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(0); //定位到棧空間的索引});connect(ui->pushButton_stackW_2,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1); //定位到棧空間的索引});connect(ui->pushButton_stackW_3,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2); //定位到棧空間的索引});
Frame是一個邊框
其他常用控件:(Input Widget)
Frame是一個邊框
(Input Widget)
Combo Box 下拉框:(直接在ui中拖動設置即可)(圖片部件標注1的部分)
//comboBox下拉框ui->comboBox->addItem("車1");ui->comboBox->addItem("車2");ui->comboBox->addItem("車3");//點擊按鈕,選中車三選項connect(ui->pushButton,&QPushButton::clicked,[=](){//ui->comboBox->setCurrentIndex(2);//或者直接輸入文字(在確定有該選項的情況下)ui->comboBox->setCurrentText("車3");});
fontComboBox 字體下拉框(圖片部件標注2的部分)
lineEdit 單行編輯框(圖片部件標注3的部分)
TextEdit 多行編輯框(可改變字體顏色形式等)(圖片部件標注4的部分)
Plain TextEdit 純文本多行編輯框
spin box 逐個增減輸入框(圖片部件標注5的部分)
Double spin box 加小數點的(圖片部件標注6的部分)
Time Edit 時間輸入框(圖片部件標注7的部分)
dateEdit 日期輸入框
dateTimeEdit 時間和日期輸入框
horizontalScrollBar 水平滑動條
verticalScrollBar 豎直滑動條
horizontalSlider 水平滑動條(可與spin box進行組合)
verticalSlider 豎直滑動條(可與spin box進行組合)
(Display widget)顯示標簽
label :可顯示文字和圖片(首先需要把圖片添加到資源文件中,然后程序添加顯示圖片)
//在lable中顯示圖片(圖片提前加載到項目資源文件res中)ui->label->setPixmap(QPixmap(":/1.jpg"));//在lable中也可以放動圖QMovie * movie = new QMovie(":/one.gif"); //注意后綴需要是gifui->label->setMovie(movie);//播放動圖movie->start();