当前位置: 首页 > news >正文

【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);
}

在这里插入图片描述

相关文章:

  • 三星MZQL2960HCJR-00BAL高性能固态硬盘控制器SSD云计算和高端存储专用 电子元器件解析
  • 【为什么InnoDB用B+树?从存储结构到索引设计深度解析】
  • 基于Qt的app开发第十四天
  • 关于B+树的介绍
  • [蓝桥杯 2023 国 B] AB 路线 (BFS)
  • 云端求解热方程:源于傅里叶的洞察-AI云计算数值分析和代码验证
  • 人工智能嵌入公共服务治理的风险挑战(一)
  • PCB 层压板的 Dk 和 Df 表征方法 – 第二部分
  • 【leetcode】543. 二叉树的直径
  • OceanBase (DBA)一面面经
  • go语言快速入门
  • QCustomPlot 中实现拖动区域放大‌与恢复
  • Android S - 重复播放按键音(上下左右、OK)
  • 算法导论第四章:分治策略的艺术与科学
  • 北京大学肖臻老师《区块链技术与应用》公开课:08-BTC-比特币挖矿
  • HTML5实现好看的邀请函网页源码
  • Linux --基础IO
  • 010502管道符_防火墙出入站_不回显带外-渗透命令-基础入门-网络安全
  • 我自己动手写了一个MySQL自动化备份脚本,基于docker
  • Ingress-nginx 接入可观测性最佳实践
  • 网站空间商那个好/自助建站的优势
  • 网站如何防止攻击/seo关键词排名优化是什么
  • 网站缺陷和优化的例子/培训机构网站
  • 电商网站页面布局/百度关键词挖掘工具爱站网
  • 网站建设营销的技巧/济南seo优化
  • 公司网站可以自己建立吗/关键词搜索排名怎么查看