【Qt】Qt控件

文章目錄

  • Qt控件
  • Layout Spacer
    • 垂直布局QVBoxLayout
    • 水平排列布局QHBoxLayout
    • 網格布局 QGridLayout
    • 表格布局 QFormLayout
  • Button Contain
    • 命令按鈕Push Button
    • 工具按鈕Tool Button
    • 單選按鈕Radio Button
    • 復選框按鈕Check Box
    • 命令鏈接按鈕Command Link Button
    • 按鈕盒Button Box
    • 組合框Group Box
    • 滾動區域Scroll Area
    • 標簽小部件Tab Widget
    • 框架Frame
    • 停靠窗體部件Dock Widget
  • 視圖Items Views
    • 清單視圖List View
    • 樹視圖Tree View
    • 表視圖Table View
    • ListWidget
    • TreeWidget
    • TabelWidget
  • Input Widget
    • Combo Box
    • Font Combo Box
    • Line Edit
    • 文本編輯框 Text Edit
    • Spin Box
    • Date/Time Edit
    • Progress Bar
    • Key Sequence Edit
  • Display Widgets
    • Label
    • Text Browser
    • Progress Bar
    • LCD N

Qt控件

Layout Spacer

垂直布局QVBoxLayout

    //修改窗口標準名稱w.setWindowTitle("垂直布局");//設置窗口大小w.resize(400,300);//船艦QVBoxLayout布局,并且設置為父控件QVBoxLayout * mainlayout=new QVBoxLayout(&w);//船艦命令按鈕控件添加到到QVBoxLayout布局mainlayout->addWidget(new QPushButton("命令按鈕1"));mainlayout->addWidget(new QPushButton("命令按鈕2"));mainlayout->addWidget(new QPushButton("命令按鈕3"));//將QVBoxLayout設置為窗口的布局w.setLayout(mainlayout);

在這里插入圖片描述

水平排列布局QHBoxLayout

    //修改窗口標準名稱w.setWindowTitle("水平布局");//設置窗口大小w.resize(400,300);//創建水平布局實例QHBoxLayout * hlayout=new QHBoxLayout;//創建命令按鈕控件添加到水平布局當中QPushButton *button1=new QPushButton("命令按鈕1");QPushButton *button2=new QPushButton("命令按鈕2");QPushButton *button3=new QPushButton("命令按鈕3");hlayout->addWidget(button1);hlayout->addWidget(button2);hlayout->addWidget(button3);//創建一個容器控件,用來設置水平布局QWidget *container=new QWidget;container->setLayout(hlayout);//將容器控件添加到主容器的垂直布局當中QVBoxLayout *mainLayout=new QVBoxLayout;mainLayout->addWidget(container);//設置窗口布局w.setLayout(mainLayout);

在這里插入圖片描述

網格布局 QGridLayout

頭文件
在這里插入圖片描述
源文件

    button1=new QPushButton(this);button1->setText("第一區:頂部菜單欄選項");button1->setFixedHeight(100);//讓button1在水平和垂直方向上都盡可能擴展以占用更多的可用空間。button1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button2=new QPushButton(this);button2->setText("第二區:側邊欄選項");button2->setFixedWidth(150);button2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button3=new QPushButton(this);button3->setText("第三區:底部選項");button3->setFixedHeight(100);button3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button4=new QPushButton(this);button4->setText("第四區:子窗體選項");button4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);pGrid_layouts=new QGridLayout();//通過此函數設置左側 頂部 右側 底部邊距,主要方便布局周邊進行使用pGrid_layouts->setContentsMargins(0,0,0,0);//顯示位置//addWidget(參數1,參數2,參數3,參數4,參數5,參數6)/**1.我要插入的子布局對象*2.插入的開始行*3.插入的開始列*4.占用的行數*5.占用的列數*6.指定對其方式*/pGrid_layouts->addWidget(button1,0,1);pGrid_layouts->addWidget(button2,0,0,3,1);pGrid_layouts->addWidget(button3,2,1);pGrid_layouts->addWidget(button4,1,1);

在這里插入圖片描述

表格布局 QFormLayout

    setFixedSize(250,200);//創建表單布局指針QFormLayout *qLayout=new QFormLayout(this);QLineEdit *le1=new QLineEdit();QLineEdit *le2=new QLineEdit();QLineEdit *le3=new QLineEdit();qLayout->addRow("學號",le1);qLayout->addRow("姓名",le2);qLayout->addRow("學校",le3);//WarpAllRows將標簽現實中在單行編輯框上面//qLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);//當標簽和單選編輯框,將標簽顯示在同一行qLayout->setLabelAlignment(Qt::AlignLeft);setWindowTitle("表單布局測試");

在這里插入圖片描述

Button Contain

命令按鈕Push Button

第一種寫法:全部寫在源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(300,150,500,300);//實例化兩個命令按鈕對象QPushButton * pb1=new QPushButton("命令按鈕",this);QPushButton * pb2=new QPushButton("命令按鈕",this);//設置兩個QPushButton對象的坐標位置pb1->setGeometry(20,20,150,50);pb2->setGeometry(20,90,150,50);//與信號槽函數連接connect(pb1,&QPushButton::clicked,this,[=](){setStyleSheet("QMainWindow {background-color:rgba(255,255,0,100%)}");});connect(pb2,&QPushButton::clicked,this,[=](){setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%)}");});
}

在這里插入圖片描述

第二種寫法:在頭文件定義,在源文件實現
頭文件
在這里插入圖片描述
源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(300,150,500,300);//實例化兩個命令按鈕對象pb1=new QPushButton("命令按鈕",this);pb2=new QPushButton("命令按鈕",this);//設置兩個QPushButton對象的坐標位置pb1->setGeometry(20,20,150,50);pb2->setGeometry(20,90,150,50);//與信號槽函數連接connect(pb1,SIGNAL(clicked()),this,SLOT(pushbutton1_clicked()));connect(pb2,SIGNAL(clicked()),this,SLOT(pushbutton2_clicked()));
}
void MainWindow::pushbutton1_clicked(){setStyleSheet("QMainWindow {background-color:rgba(255,255,0,100%)}");
}
void MainWindow::pushbutton2_clicked(){setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%)}");
}

在這里插入圖片描述

工具按鈕Tool Button

頭文件
在這里插入圖片描述

源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(300,150,500,300);//實例化QToolBar對象tbar=new QToolBar(this);tbar->setGeometry(20,20,200,90);//設置QStyle類對象進行實例化,主要目的設置風格,圖標時系統自帶QStyle *sty=QApplication::style();   //獲取當前應用程序的全局樣式對象指針; QApplication::style() 返回應用程序默認的QStyle對象QIcon ico=sty->standardIcon(QStyle::SP_TitleBarContextHelpButton);//設置QToolButton對象進行實例化tbutton=new QToolButton();tbutton->setIcon(ico);tbutton->setText("系統幫助提示");//調用setToolButtonStyle函數設置tbutton樣式,設置文本在圖標下方tbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//將tubbton添加到tbar里面tbar->addWidget(tbutton);
}

在這里插入圖片描述

單選按鈕Radio Button

源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(300,150,500,300);QRadioButton * radb1= new QRadioButton(this);QRadioButton * radb2= new QRadioButton(this);radb1->setGeometry(20,20,150,40);radb2->setGeometry(20,80,150,40);radb1->setText("選擇按鈕1");radb2->setText("選擇按鈕2");//設置默認值Checked false trueradb1->setChecked(true);radb2->setChecked(false);}

在這里插入圖片描述

復選框按鈕Check Box

頭文件
在這里插入圖片描述
源文件

#include <QCheckBox>
#include <QRadioButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(400,300,500,300);cb= new QCheckBox(this);cb->setGeometry(30,50,250,50);cb->setCheckState(Qt::Checked);cb->setText("初始化狀態:Check狀態");cb->setTristate();//開啟三態模式:選中,半選擇,未選擇connect(cb,SIGNAL(stateChanged(int)),this,SLOT(checkboxstate(int)));}MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::checkboxstate(int istate){switch(istate){case Qt::Checked:cb->setText("選中狀態");break;case Qt::Unchecked:cb->setText("未選中狀態");break;case Qt::PartiallyChecked:cb->setText("半選中狀態");break;default:break;}
}

在這里插入圖片描述

命令鏈接按鈕Command Link Button

頭文件
在這里插入圖片描述
源文件

#include <QDesktopServices>
#include <QUrl>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(400,300,500,300);clb=new QCommandLinkButton("testclb","clicked testclb",this);clb->setGeometry(50,100,250,60);connect(clb,SIGNAL(clicked()),this,SLOT(clbClicked()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::clbClicked(){QDesktopServices::openUrl(QUrl("https://baidu.com"));
}

在這里插入圖片描述

按鈕盒Button Box

頭文件
在這里插入圖片描述

源文件

#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(400,300,500,300);dbb=new QDialogButtonBox(this);dbb->setGeometry(100,100,200,30);//傳統按鈕創建方式dbb->addButton(QDialogButtonBox::Cancel);dbb->button(QDialogButtonBox::Cancel)->setText("取 消");//這里是自定義按鈕,傳統按鈕只有ok,open,save,canncel...可以查幫助手冊pb=new QPushButton("自定義");//將pb添加到dbb,并且設定ButtonRole為ActionRoledbb->addButton(pb,QDialogButtonBox::ActionRole);connect(dbb,SIGNAL(clicked(QAbstractButton *)),this, SLOT(dbbpbClicked(QAbstractButton*)));
}void MainWindow::dbbpbClicked(QAbstractButton *bt){if(bt==dbb->button(QDialogButtonBox::Cancel)){qDebug()<<"您已經點擊【取消】按鈕"<<Qt::endl;}else if(bt==pb){qDebug()<<"您已經點擊【自定義】按鈕"<<Qt::endl;}
}

在這里插入圖片描述

組合框Group Box

1.先把組合框實例化
2.創建按鈕(單選/多選)
3.創建布局模式,并把按鈕全部添加進布局模式當中addWidget()
4.把組合框的布局設置為剛剛創建的布局模式setLayout()

#include "widget.h"#include <QDebug>
#include <QPushButton>
#include <QGroupBox>
#include <QRadioButton>
#include <QVBoxLayout>
#include <QCheckBox>
#include <QMenu>Widget::Widget(QWidget *parent): QWidget(parent)
{//組合框1:gpb_1QGroupBox *gpb_1=new QGroupBox("單選按鈕組1");QRadioButton *rbtn_1=new QRadioButton("RadioButton1");QRadioButton *rbtn_2=new QRadioButton("RadioButton2");QRadioButton *rbtn_3=new QRadioButton("RadioButton3");QVBoxLayout *vbly1=new QVBoxLayout;vbly1->addWidget(rbtn_1);vbly1->addWidget(rbtn_2);vbly1->addWidget(rbtn_3);gpb_1->setLayout(vbly1);//組合框2:gpb_2QGroupBox *gpb_2=new QGroupBox("復選按鈕組2");QCheckBox *cbx1=new QCheckBox("checkbox1");QCheckBox *cbx2=new QCheckBox("checkbox2");QCheckBox *cbx3=new QCheckBox("checkbox3");//設置是否支持半選cbx2->setTristate(true);cbx2->setChecked(true);QVBoxLayout *vbly2=new QVBoxLayout;vbly2->addWidget(cbx1);vbly2->addWidget(cbx2);vbly2->addWidget(cbx3);gpb_2->setLayout(vbly2);//組合框3:gpb_3QGroupBox *gpb_3=new QGroupBox("單選按鈕和復選按鈕組3");gpb_3->setCheckable(true);QRadioButton  *rbtn_31=new QRadioButton("RadioButton31");QRadioButton  *rbtn_32=new QRadioButton("RadioButton32");QRadioButton  *rbtn_33=new QRadioButton("RadioButton33");QCheckBox *cbx4=new QCheckBox("checkbox4");QVBoxLayout *vbly3=new QVBoxLayout;vbly3->addWidget(rbtn_31);vbly3->addWidget(rbtn_32);vbly3->addWidget(rbtn_33);vbly3->addWidget(cbx4);gpb_3->setLayout(vbly3);//組合框4:gpb_4QGroupBox *gpb_4=new QGroupBox("綜合按鈕組4");gpb_4->setCheckable(true);gpb_4->setChecked(true);QPushButton *pbtn_4=new QPushButton("PushButton4");QPushButton *pbtn_5=new QPushButton("PushButton5");pbtn_5->setChecked(true);pbtn_5->setCheckable(true);QPushButton *pbtn_6=new QPushButton("PushButton6");//命令按鈕添加子菜單QMenu *mu=new QMenu(this);mu->addAction("King");mu->addAction("Darren");mu->addAction("Mark");mu->addAction("Vico");pbtn_6->setMenu(mu);QVBoxLayout *vbly4=new QVBoxLayout;vbly4->addWidget(pbtn_4);vbly4->addWidget(pbtn_5);vbly4->addWidget(pbtn_6);gpb_4->setLayout(vbly4);QGridLayout *gdlyout=new QGridLayout;gdlyout->addWidget(gpb_1,0,0,1,1);gdlyout->addWidget(gpb_2,0,1,1,1);gdlyout->addWidget(gpb_3,1,0,1,1);gdlyout->addWidget(gpb_4,1,1,1,1);this->setLayout(gdlyout);
}

在這里插入圖片描述

滾動區域Scroll Area

添加圖片步驟:
1.把圖片的文件夾復制到在項目目錄下
2.在Qt中添加現有文件,選中圖片文件夾
3.給文件夾加前綴,添加圖片,保存

#include "widget.h"#include <QApplication>
#include <QLabel>
#include <QScrollArea>
#include <QGridLayout>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.resize(300,200);/** QScrollArea當中有很多功能繼承來自于QAbstractScrollArea* 滾動條外觀是否漂亮取決于當前滾動條策略*///創建Qlabel用于顯示圖片QLabel *qljpg=new QLabel;//允許圖片縮放以適應QLabelqljpg->setScaledContents(true);//加載圖片QImage imagejpg(":/images/2.png");if (imagejpg.isNull()) {qDebug() << "Failed to load image!";} else {qljpg->setPixmap(QPixmap::fromImage(imagejpg));}//創建滾動區域QScrollArea *sArea=new QScrollArea;//圖片居中//sArea->setAlignment(Qt::AlignCenter);//根據窗口比例顯示//sArea->setWidgetResizable(true);//設置水平滾動條始終顯示。sArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//設置垂直滾動條始終隱藏sArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//把QLabel添加到滾動區域sArea->setWidget(qljpg);//創建布局并添加滾動區域QGridLayout *glayout=new QGridLayout;glayout->addWidget(sArea);w.setLayout(glayout);w.show();return a.exec();
}

在這里插入圖片描述

標簽小部件Tab Widget

頭文件
在這里插入圖片描述

源文件

#include "widget.h"#include<QTabWidget>
#include<QGridLayout>
#include<QLabel>
#include<QPushButton>
#include<QLineEdit>
#include<QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent)
{this->setWindowTitle("標簽小部件控件測試");this->setGeometry(300,200,600,400);tabWidgetUI=new QTabWidget(this);tabWidgetUI->setGeometry(20,20,560,360);tabWidgetUI->show();bool m_showtabwidgetui1=true;bool m_showtabwidgetui2=true;if(m_showtabwidgetui1){QWidget *qwidget1=new QWidget();tabWidgetUI->addTab(qwidget1,"進程");QGridLayout *glayout=new QGridLayout();QLabel *lab1=new QLabel("請選擇文件及文件夾:");QLineEdit *ledit1=new QLineEdit();QPushButton *pbt1=new QPushButton("消息框...");connect(pbt1,SIGNAL(clicked(bool)),this,SLOT(MsgCommit()));glayout->addWidget(lab1,0,0);glayout->addWidget(ledit1,0,1);glayout->addWidget(pbt1,0,2);qwidget1->setLayout(glayout);}if(m_showtabwidgetui2){QWidget *qwidget2=new QWidget();tabWidgetUI->addTab(qwidget2,"性能");}}void Widget::MsgCommit(){QMessageBox::information(NULL,"testing","QMessageBox:命令按鈕測試成功!",QMessageBox::Ok);
}

在這里插入圖片描述

框架Frame

在ui界面中,設置兩個frame_1和frame_2,設置為網格布局
在這里插入圖片描述

源文件

#include <QFrame>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);setWindowTitle("Frame框架控件測試");ui->frame_1->setStyleSheet("background-color:yellow");ui->frame_2->setStyleSheet("background-color:green");ui->frame_1->setLineWidth(1);ui->frame_1->setMidLineWidth(1);ui->frame_1->setFrameShape(QFrame::Box);ui->frame_1->setFrameShadow(QFrame::Raised);ui->frame_2->setLineWidth(0);ui->frame_2->setMidLineWidth(1);ui->frame_2->setFrameShape(QFrame::Box);ui->frame_2->setFrameShadow(QFrame::Sunken);
}

停靠窗體部件Dock Widget

源文件

#include <QDockWidget>
#include<QLabel>
#include<QComboBox>
#include <QPushButton>
#include <QGridLayout>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QDockWidget *dw=new QDockWidget("停靠窗口部件測試",this);QLabel *lab=new QLabel("學歷層次");QComboBox *cbx= new QComboBox();cbx->addItem("小學");cbx->addItem("初中");cbx->addItem("高中");cbx->addItem("大學");QPushButton *pbt1=new QPushButton("清華大學");QPushButton *pbt2=new QPushButton("北京大學");QGridLayout *glayout=new QGridLayout();glayout->addWidget(lab,0,0,1,1);glayout->addWidget(cbx,0,1,1,1);glayout->addWidget(pbt1,1,0,1,1);glayout->addWidget(pbt2,1,1,1,1);glayout->setHorizontalSpacing(10);glayout->setVerticalSpacing(10);glayout->setContentsMargins(20,20,20,20);QWidget *wgt=new QWidget();wgt->setLayout(glayout);dw->setWidget(wgt);dw->setMaximumSize(300,300);
}

在這里插入圖片描述

視圖Items Views

清單視圖List View

頭文件
在這里插入圖片描述
源文件

#include <QListView>
#include <QStringListModel>
#include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent)
{resize(450,250);listview1=new QListView(this);listview1->setGeometry(20,20,240,160);//初始化數據列表QStringList qlist;qlist.append("運動類:籃球、足球");qlist.append("娛樂類:看電影、寫小說、聽音樂");qlist.append("游戲類:五子棋、撲克牌、中國象棋");qlist.append("旅游類:國外旅游、國內旅游");//創建一個 QStringListModel 對象 listmode,用于管理 qlist 中的數據。QStringListModel *listmode=new QStringListModel(qlist);//將 listmode 設置為 listview1 的數據模型,以便在 QListView 中顯示這些數據。listview1->setModel(listmode);connect(listview1,SIGNAL(clicked(const QModelIndex)),this,SLOT(SlotClickedFunc(const QModelIndex)));
}Widget::~Widget() {}
void Widget::SlotClickedFunc(const QModelIndex &index){QMessageBox::information(NULL,"興趣愛好","你選擇的類型為:\n"+index.data().toString());
}

在這里插入圖片描述

樹視圖Tree View

在ui中,添加TreeView視圖
在這里插入圖片描述

頭文件
在這里插入圖片描述

源文件

#include <QStandardItem>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);InitTreeViewFunc();
}MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::InitTreeViewFunc()
{//1.構造modelsItemMode=new QStandardItemModel(ui->treeView);//等價于//sItemMode = new QStandardItemModel();  // 1. 創建模型對象
ui->treeView->setModel(sItemMode);     // 2. 將模型設置給視圖//sItemMode->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("編號")<<QStringLiteral("初中部|高中部"));QList<QStandardItem*> item11;QStandardItem *item1=new QStandardItem(QString::number(1));QStandardItem *item2=new QStandardItem("初中部");//創建一級節點,將它加入到sItemModelitem11.append(item1);item11.append(item2);sItemMode->appendRow(item11);//二級節點,添加到第一個一級節點QList<QStandardItem*> item112;QStandardItem *item1121=new QStandardItem(QString::number(2));QStandardItem *item1122=new QStandardItem(QStringLiteral("一年級"));item112.append(item1121);item112.append(item1122);item1->appendRow(item112);//三級節點,添加到第一個二級節點QList<QStandardItem*> item1231;QStandardItem *item12311=new QStandardItem(QString::number(3));QStandardItem *item12312=new QStandardItem(QStringLiteral("一班"));item1231.append(item12311);item1231.append(item12312);item1121->appendRow(item1231);QList<QStandardItem*> item1232;QStandardItem *item12321=new QStandardItem(QString::number(3));QStandardItem *item12322=new QStandardItem(QStringLiteral("二班"));item1232.append(item12321);item1232.append(item12322);item1121->appendRow(item1232);QList<QStandardItem*> item21;QStandardItem *item3=new QStandardItem(QString::number(1));QStandardItem *item4=new QStandardItem("高中部");//創建一級節點,將它加入到sItemModelitem21.append(item3);item21.append(item4);sItemMode->appendRow(item21);ui->treeView->setModel(sItemMode);
}

在這里插入圖片描述

表視圖Table View

在ui 界面中,添加table view控件
頭文件
在這里插入圖片描述
源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);InitTableViewFunc();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::InitTableViewFunc()
{QStandardItemModel *stuMode=new QStandardItemModel();stuMode->setHorizontalHeaderItem(0,new QStandardItem(QObject::tr("學號")));stuMode->setHorizontalHeaderItem(1,new QStandardItem(QObject::tr("姓名")));stuMode->setHorizontalHeaderItem(2,new QStandardItem(QObject::tr("性別")));stuMode->setHorizontalHeaderItem(3,new QStandardItem(QObject::tr("分數")));//通過API函數將數據模型綁定到QTableViewui->tableView->setModel(stuMode);//設置表格列的寬度ui->tableView->setColumnWidth(0,120);//2.添加數據信息stuMode->setItem(0,0,new QStandardItem("2022001"));stuMode->setItem(0,1,new QStandardItem("張三"));stuMode->setItem(0,2,new QStandardItem("男"));stuMode->setItem(0,3,new QStandardItem("714"));stuMode->setItem(1,0,new QStandardItem("2022002"));stuMode->setItem(1,1,new QStandardItem("小花"));stuMode->setItem(1,2,new QStandardItem("女"));stuMode->setItem(1,3,new QStandardItem("754"));stuMode->setItem(2,0,new QStandardItem("2022003"));stuMode->setItem(2,1,new QStandardItem("李三"));stuMode->setItem(2,2,new QStandardItem("男"));stuMode->setItem(2,3,new QStandardItem("765"));
}

在這里插入圖片描述

ListWidget

在ui文件創建listWidget
源文件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QListWidgetItem *qitem=new QListWidgetItem("沁園春-雪");ui->listWidget->addItem(qitem);qitem->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);QStringList slist;slist<<"1:北國風光,千里冰封,萬里雪飄";slist<<"2:望長城內外...";ui->listWidget->addItems(slist);}

在這里插入圖片描述

TreeWidget

源文件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//添加第一級節點QTreeWidgetItem*topItem1=new QTreeWidgetItem(ui->treeWidget);topItem1->setText(0,"清華大學");ui->treeWidget->addTopLevelItem(topItem1);//隱藏表頭ui->treeWidget->setHeaderHidden(true);//展開節點ui->treeWidget->expandAll();//二級節點添加到一級節點的topItem1QTreeWidgetItem *item11=new QTreeWidgetItem(topItem1);item11->setText(0,"清華大學建筑學院");item11->setCheckState(0,Qt::Checked);QTreeWidgetItem *item12=new QTreeWidgetItem(topItem1);item12->setText(0,"清華大學土木學院");item12->setCheckState(0,Qt::Checked);QTreeWidgetItem*topItem2=new QTreeWidgetItem(ui->treeWidget);topItem2->setText(0,"北京大學");ui->treeWidget->addTopLevelItem(topItem2);ui->treeWidget->setHeaderHidden(true);ui->treeWidget->expandAll();QTreeWidgetItem *item21=new QTreeWidgetItem(topItem2);item21->setText(0,"北京大學文學院");item21->setCheckState(0,Qt::Checked);
}

yuan

TabelWidget

源文件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->tableWidget->setRowCount(3);ui->tableWidget->setColumnCount(2);QStringList slist;slist<<"學號"<<"高考分數";ui->tableWidget->setHorizontalHeaderLabels(slist);QList<QString> strno;strno<<"202201"<<"202202"<<"202203";QList<QString> strscore;strscore<<"708"<<"712"<<"690";for(int i=0;i<3;i++){int iCol=0;QTableWidgetItem *pitem = new QTableWidgetItem(strno.at(i));ui->tableWidget->setItem(i,iCol++,pitem);ui->tableWidget->setItem(i,iCol,new QTableWidgetItem(strscore.at(i)));}}

在這里插入圖片描述

Input Widget

Combo Box

頭文件
在這里插入圖片描述

源文件

#include <QMessageBox>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//設置主空格的顯示位置及大小this->setGeometry(300,200,1000,600);combobox=new QComboBox(this);combobox->setGeometry(10,10,200,30);combobox->addItem("北京市");combobox->addItem("上海市");combobox->addItem("廣東省");connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));}MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::comboboxIndex(int index){qDebug()<<"你選擇的區域是:"<<combobox->itemText(index)<<Qt::endl;QMessageBox mybox(QMessageBox::Question,"信息",combobox->itemText(index),QMessageBox::Yes|QMessageBox::No);mybox.exec();
}

在這里插入圖片描述

Font Combo Box

源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);fontcombobox=new QFontComboBox(this);qlabels=new QLabel(this);fontcombobox->setGeometry(10,50,200,30);qlabels->setGeometry(10,70,300,50);connect(fontcombobox,SIGNAL(currentFontChanged(QFont)),this,SLOT(fontComboboxFunc(QFont)));
}void MainWindow::fontComboboxFunc(QFont font){qlabels->setFont(font);QString qStr="廣東省廣州市";qlabels->setText(qStr);
}

在這里插入圖片描述

頭文件
在這里插入圖片描述

Line Edit

頭文件
在這里插入圖片描述
源文件

#include <QMessageBox>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);lineedit=new QLineEdit(this);lineedit->setGeometry(10,150,200,30);pushbutton=new QPushButton(this);pushbutton->setText("點擊我");qlabely=new QLabel(this);qlabely->setGeometry(10,200,400,30);qlabely->setText("你輸入的內容為:");connect(pushbutton,SIGNAL(clicked()),this,SLOT(pushbuttonclicked()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::pushbuttonclicked(){QString qStr;qStr="您輸入的內容為:";qStr=qStr+lineedit->text();qlabely->setText(qStr);lineedit->clear();
}

在這里插入圖片描述

文本編輯框 Text Edit

頭文件
在這里插入圖片描述

源文件

#include <QDir>
#include <QTextStream>
#include <QCoreApplication>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);plaintedit=new QPlainTextEdit(this);plaintedit->setGeometry(10,250,400,200);radiobutton=new QRadioButton(this);radiobutton->setGeometry(260,220,200,30);radiobutton->setText("只讀模式");QDir::setCurrent(QCoreApplication::applicationDirPath());QFile fe("moc_mainwindow.cpp");fe.open(QFile::ReadOnly|QFile::Text);//加載到文件流QTextStream strin(&fe);plaintedit->insertPlainText(strin.readAll());connect(radiobutton,SIGNAL(clicked()),this,SLOT(radioButtonClicked()));
}void MainWindow::radioButtonClicked()
{if(radiobutton->isChecked()){plaintedit->setReadOnly(true);}else{plaintedit->setReadOnly(false);}
}

在這里插入圖片描述

Spin Box

頭文件
在這里插入圖片描述
源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//改變窗口背景顏色this->setStyleSheet("QMainWindow{background-color:""rgba(250,220,120,100%))}");spinbox=new QSpinBox(this);spinbox->setGeometry(440,250,150,30);spinbox->setRange(0,100);spinbox->setSingleStep(10);spinbox->setValue(100);spinbox->setSuffix("%不透明度");connect(spinbox,SIGNAL(valueChanged(int)),this,SLOT(spinboxValueChanged(int)));
}void MainWindow::spinboxValueChanged(int x)
{double dx=(double)x/100;this->setWindowOpacity(dx);
}

在這里插入圖片描述

Date/Time Edit

頭文件

在這里插入圖片描述

源文件


MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);dte=new QDateTimeEdit(QDateTime::currentDateTime(),this);dte->setGeometry(440,290,220,30);te=new QTimeEdit(QTime::currentTime(),this);te->setGeometry(440,330,200,30);de=new QDateEdit(QDate::currentDate(),this);de->setGeometry(440,370,200,30);
}

在這里插入圖片描述

Progress Bar

頭文件

在這里插入圖片描述

源文件

hscrollbar=new QScrollBar(Qt::Horizontal,this);hscrollbar->setGeometry(0,500,1000,30);vscrollbar=new QScrollBar(Qt::Vertical,this);vscrollbar->setGeometry(570,0,30,500);

在這里插入圖片描述

Key Sequence Edit

頭文件

在這里插入圖片描述

源文件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);kse=new QKeySequenceEdit(this);kse->setGeometry(200,230,200,30);connect(kse,SIGNAL(keySequenceChanged(const QKeySequence &)),this,SLOT(keyseqeditChanged(const QKeySequence &)));}void MainWindow::keyseqeditChanged(const QKeySequence &key){if(key==QKeySequence(tr("Ctrl+Q")))this->close();elseqDebug()<<key.toString()<<Qt::endl;
}

在這里插入圖片描述

Display Widgets

Label

在ui中添加Label,更名為labeljpg
頭文件
在這里插入圖片描述

源文件

#include <QMessageBox>
#include <QImage>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);textlabelFunc();
}void Widget::textlabelFunc(){QString fName("C:\\Users\\Gemini\\Desktop\\1.jpg");QImage *qimg=new QImage;if(!(qimg->load(fName))){QMessageBox::information(this,"失敗","加載jpg圖片失敗,請重新檢查");delete qimg;return;}ui->labeljpg->setPixmap(QPixmap::fromImage(*qimg));
}

Text Browser

在ui界面中添加textBrowser
頭文件
在這里插入圖片描述
源文件

#include <QFile>
#include <QString>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);textbrowserFuncReadTxt();
}void Widget::textbrowserFuncReadTxt(){QString qStrdData;QFile qfile("C:\\Users\\Gemini\\Desktop\\1.txt");if(!(qfile.open(QIODevice::ReadOnly|QIODevice::Text))){QMessageBox::warning(this,"失敗","打開文件失敗,請重新檢查");}while(!qfile.atEnd()){QByteArray ay=qfile.readLine();QString strs(ay);qStrdData.append(strs);}ui->textBrowser->setText(qStrdData);
}

Progress Bar

在ui中添加progress Bar進度條按鈕,并且可以右鍵按鈕提升為槽。這是系統會自動創建隱性的信號與槽機制,不需要再寫connect()
在這里插入圖片描述

頭文件
在這里插入圖片描述
源文件


Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->progressBar->setRange(0,1000000);ui->progressBar->setValue(0);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{for(int i=1;i<=1000000;i++){for(int j=0;j<1;j++){ui->progressBar->setValue(i);}}
}

在這里插入圖片描述

LCD N

在ui界面中添加LCD Number和三個按鈕,命名如下。并把三個按鈕都右鍵添加槽函數
在這里插入圖片描述
頭文件在這里插入圖片描述

源文件

#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);InitFunc();connect(timers,&QTimer::timeout,this,&Widget::on_timerout);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushbtnstart_clicked()
{timers->start();ui->pushbtnstart->setEnabled(false);ui->pushbtnpause->setEnabled(true);ui->pushbtnreset->setEnabled(true);
}void Widget::on_pushbtnpause_clicked()
{timers->stop();ui->pushbtnstart->setEnabled(true);ui->pushbtnpause->setEnabled(false);ui->pushbtnreset->setEnabled(true);
}void Widget::on_pushbtnreset_clicked()
{timers->stop();iValues=0;ui->pushbtn->display(iValues);ui->pushbtnstart->setEnabled(true);ui->pushbtnpause->setEnabled(true);ui->pushbtnreset->setEnabled(false);
}void Widget::InitFunc(){timers=new QTimer(this);timers->setInterval(1000);//定時周期為1stimers->stop();
}
void Widget::on_timerout(){iValues++;ui->pushbtn->display(iValues);
}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84759.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84759.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84759.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP基礎-運算符

PHP 的運算符是編程中非常基礎但又非常重要的一部分&#xff0c;掌握它們能讓你更靈活地處理各種邏輯、計算和流程控制。 算術運算符 用于基本數學運算&#xff1a; 運算符含義示例加法$a $b-減法$a - $b*乘法$a * $b/除法$a / $b%取模$a % $b 示例&#xff1a; <?ph…

AR珠寶佩戴與傳統的珠寶購物有哪些區別??

AR 珠寶佩戴與傳統的珠寶購物究竟存在著哪些顯著區別呢?在傳統的珠寶購物模式里&#xff0c;顧客往往需要花費時間和精力前往實體珠寶店。踏入店內&#xff0c;首先映入眼簾的便是那一排排的玻璃展柜&#xff0c;此時&#xff0c;銷售人員會熱情地走上前&#xff0c;小心翼翼地…

華為云CAE部署spring cloud服務

1 概述 華為云CAE&#xff08;Cloud Application Engine云應用引擎&#xff09;是一個面向WEB、微服務應用的Serverless托管服務&#xff0c;提供極速部署、極低成本、極簡運維的一站式應用托管方案。支持從源碼、軟件包、鏡像包快速發布應用&#xff0c;秒級彈性伸縮、按量付…

【技術工具】源碼管理 - GIT工具

【技術工具】源碼管理 - GIT工具 1 前言 之前參考語雀一位大佬的&#xff0c;但鏈接找不到了&#xff0c;僅供參考。 1、檢查空白錯誤 //確認將提交的內容中有無空白信息 git diff --check 2、嘗試讓每一個提交成為一個邏輯的獨立變更集 盡量使每筆提交都成為獨立的patch&a…

Objective-c Block 面試題

以下是對我們這整段關于 Objective-C 中 Block、__block 修飾符、內存管理行為、生命周期等內容的全面總結&#xff0c;并附帶了一套適合面試準備的面試題集&#xff08;帶答案&#xff09;。 &#x1f9e0; 一、知識總結&#xff1a;Objective-C Block __block 修飾符 ? Bl…

AndroidMJ-基礎-05

基礎part5: 9:測試相關 postman genemotion espresso 10:性能相關 profiler 9.測試相關 espresso相關&#xff1a; Android Espresso 自動化測試指南&#xff08;Java 版&#xff09;-CSDN博客 10.性能相關 profiler相關&#xff1a; AndroidStudio之內層泄漏工具Profiler…

R語言 | 如何使用R書寫html文檔?

更靈活的書寫方式&#xff0c;可以直接看3. 1. 可用函數 cat()函數writeLines()函數sink()函數重定向輸出到HTML文件 小結&#xff1a;cat()適合簡單HTML&#xff0c;writeLines()適合多行內容&#xff0c;sink()適合復雜場景。 說明&#xff1a;盡可能不用R包&#xff0c;減…

oracle 表空間超過最大限度,清理數據釋放內存

目錄 一、擴容&#xff1a;參考 https://blog.csdn.net/weixin_40841731/article/details/134931289 二、清理數據 1、查詢文件大小情況&#xff08;管理員賬號&#xff09; 2、查詢表的大小&#xff08;使用該表空間的用戶&#xff09; 3、清理數據&#xff08;使用該表空…

初版BL程序一些細節整理(碎碎念)

一.串口的中斷觸發 一般我們都是使用TXE或者RXNE來觸發中斷&#xff0c;其實還有完整傳輸結束的TC標志位和接收完成的IDLE標志位 這兩個標志位有些不同&#xff0c;RXNE標志位只需要讀取寄存器就會自行清除&#xff0c;但是這兩個需要讀取兩個&#xff0c;拿IDLE舉例子 這里需要…

為何京東與螞蟻集團競相申請穩定幣牌照?

京東與螞蟻集團競相申請穩定幣牌照&#xff0c;主要是為了搶占數字金融新賽道&#xff0c;結合香港的寬松監管政策與全球穩定幣市場的快速增長。香港2023年推出的穩定幣監管框架及2025年8月即將實施的《穩定幣條例》&#xff0c;為企業提供了合規路徑&#xff0c;吸引京東通過幣…

[特殊字符] Harmony OS Next里的Web組件:網頁加載的全流程掌控手冊

&#x1f389; Harmony OS Next里的Web組件&#xff1a;網頁加載的全流程掌控手冊 ##Harmony OS Next ##Ark Ts ##教育 本文適用于教育科普行業進行學習&#xff0c;有錯誤之處請指出我會修改。 開發者必看的生命周期回調詳解代碼實操指南 作為開發者&#xff0c;你可能經常需…

【Java學習筆記】集合介紹

集合 > > 集合的引出 在之前常使用數組存儲數據&#xff0c;存在的問題如下&#xff1a; &#xff08;1&#xff09;初始化時&#xff0c;長度必須指定&#xff0c;而且一旦指定&#xff0c;不能更改 &#xff08;2&#xff09;不方便擴容&#xff08;使用循環復制原…

電流傳感器在汽車中的應用:從BMS電池管理到電機控制的工程解析

1 電流傳感器&#xff1a;汽車電子系統的神經末梢 在現代汽車電子架構中&#xff0c;電流傳感器已從簡單的測量元件演變為??關鍵的安全與性能組件??。作為動力系統的“神經末梢”&#xff0c;它們持續采集電流參數并反饋至控制單元&#xff0c;構成??實時閉環控制的基礎…

積分商城拼團系統框架設計

一、邏輯分析 用戶相關邏輯 用戶注冊與登錄&#xff1a;用戶需要注冊賬號才能參與積分商城拼團活動。注冊過程中需收集必要信息&#xff0c;如用戶名、密碼、聯系方式等。登錄功能則用于驗證用戶身份&#xff0c;方便用戶后續操作。用戶積分管理&#xff1a;用戶通過各種途徑&a…

java 數據結構-HashMap

一、hashmap特點 1、HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。 2、HashMap 實現了 Map 接口,根據鍵的 HashCode 值存儲數據,具有很快的訪問速度,最多允許一條記錄的鍵為 null,不支持線程同步。 3、HashMap 是無序的,即不會記錄插入的順序。 4、HashMa…

DBSyncer:一款開源的數據同步工具

DBSyncer&#xff08;簡稱 dbs&#xff09;是一款開源的實時數據同步中間件&#xff0c;提供 MySQL、Oracle、SQL Server、PostgreSQL、SQLite、Elasticsearch、Kafka、File、SQL 數據庫等同步場景&#xff1b;支持上傳插件自定義同步轉換業務&#xff1b;提供監控全量和增量數…

大型語言模型的中毒攻擊的系統評價

大家讀完覺得有幫助記得及時關注和點贊&#xff01;&#xff01;&#xff01; 抽象 隨著預訓練大型語言模型 &#xff08;LLM&#xff09; 及其訓練數據集的廣泛使用&#xff0c;人們對與其使用相關的安全風險的擔憂顯著增加。 這些安全風險之一是 LLM 中毒攻擊的威脅&#xff…

Windows 10更新失敗解決方法

前言 在我們使用 Windows 時的時候&#xff0c;很多時候遇到系統更新 重啟之后卻一直提示“我們無法完成更新&#xff0c;正在撤銷更改” 這種情況非常煩人&#xff0c;但其實可以通過修改文件的方法解決&#xff0c;并且正常更新到最新版操作系統 01修改注冊表 管理員身份…

Redis高級|Redis單線程VS多線程(基礎)

文章目錄 面試題Redis為什么選擇單線程為什么逐漸加入多線程特性Redis6、Redis7的多線程特性和IO多路復用入門Redis7多線程 面試題 Redis到底是單線程還是多線程&#xff1f;IO多路復用聽說過嗎&#xff1f;Redis為什么這么快&#xff1f; Redis為什么選擇單線程 其實Redis單…

ONLYOFFICE 的AI技巧-1.集成OCR、文本轉圖像、電子表格集成等新功能

隨著人工智能不斷革新數字辦公空間&#xff0c;我們通過全新的 ONLYOFFICE AI 插件再次實現突破。無論您是長期用戶還是新手&#xff0c;這些更新都將讓您的文檔處理更加智能、直觀且高效。讓我們一起來了解這些最新增強功能——部分功能已在 ONLYOFFICE 文檔 8.3.3 版本中上線…