日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习回顾(二)界面布局及其控件设计

發布時間:2023/12/9 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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->setMovable(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("C:\\Users\\Administrator\\Desktop\\day2資料\\Doc\\Image\\Luffy.png"));//使用添加Qt資源":+前綴名+文件名"ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));

效果圖如下:


(5)對話框介紹

  • 對話框也分模態對話框和非模態對話框

  • 1、模態對話框 不可以對其他窗口進行操作 會出現阻塞(即要先處理了對話框之后才能處理別處)

    • QDialog dlg(this) ;dlg.exec();
  • 2、非模態對話框 可以對其他窗口進行操作但會一閃而過,因此要創建到堆區中

    • QDialog * dlg2 = newQDialog(this);dlg2->show();dlg2->setAttribute(Qt::WA_DeleteOnClose);
//模態創建 阻塞 // QDialog dlg(this); // dlg.resize(200,100); // dlg.exec(); // qDebug()<<"模態創建";// //非模態創建QDialog*dlg2=new QDialog(this);dlg2->resize(200,100);dlg2->show();dlg2->setAttribute(Qt::WA_DeleteOnClose);//55號 屬性qDebug()<<"非模態創建";
  • 消息對話框
  • QMessageBox 靜態成員函數 創建對話框(錯誤、信息、提問、警告)
  • 提問對話框中函數參數:
    參數1 父親 參數2 標題 參數3 顯示內容 參數4 按鍵類型 參數5 默認關聯回車按鍵
// QMessageBox::critical(this,"critical","錯誤");//信息對話框 // QMessageBox::information(this,"info","信息");//提問對話框//參數1 父親 參數2 標題 參數3 提示內容 參數4 按鍵類型 參數5 默認關鍵回車按鍵if(QMessageBox::Save==QMessageBox::question(this,"ques","提問",QMessageBox::Save|QMessageBox::Cancel)){qDebug()<<"選擇的是保存";}else{qDebug()<<"選擇的是取消";}//警告對話框// QMessageBox::warning(this,"warning","警告");
  • 其他標準對話框
//其他標準對話框//顏色對話框 // QColor color=QColorDialog::getColor(QColor(255,0,0)); // qDebug()<<"r="<<color.red()<<"g="<<color.green()<<"b="<<color.blue();// //文件對話框 參數1 父親 餐數2 標題 參數3 默認打開路徑 參數4 過濾文件格式 // //返回值 選取的路徑 // QString str= QFileDialog::getOpenFileName(this,"圖片","C:\\Users\\Administrator\\Desktop\\day2資料\\Doc\\Image",".png"); // qDebug()<<str;//字體對話 框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;});// //利用listWidget寫詩 // QListWidgetItem*item=new QListWidgetItem("鋤禾日當午"); // ui->listWidget->addItem(item); // item->setTextAlignment(4);//QStringList QList<Qstring>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);//設置正文 // ui->tableWidget->setItem(0,0,new QTableWidgetItem("亞瑟"));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)));//int轉strinui->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();
//棧控件使用//設置默認定位 scrollAreaui->stackedWidget->setCurrentIndex(1);//scrollArea按鈕connect(ui->btn_scrollArea,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1);});//toolBox按鈕connect(ui->btn_ToolBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2);});//TabWidget按鈕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->setCurrentIndex(2);ui->comboBox->setCurrentText("拖拉機");});//利用QLabel顯示圖片ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));//利用QLabel顯示 gif動態圖片QMovie * movie = new QMovie(":/Image/mario.gif");ui->lbl_movie->setMovie(movie);//播放動圖movie->start();


總結

以上是生活随笔為你收集整理的QT学习回顾(二)界面布局及其控件设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。