线在科技成都网站推广公司,天津全包圆装修公司电话,wordpress 博客插件,如何建立自己的手机网站文章目录 Qt控件Layout Spacer垂直布局QVBoxLayout水平排列布局QHBoxLayout网格布局 QGridLayout表格布局 QFormLayout Button Contain命令按钮Push Button工具按钮Tool Button单选按钮Radio Button复选框按钮Check Box命令链接按钮Command Link Button按钮盒Button Box组合框G… 文章目录 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 ViewListWidgetTreeWidgetTabelWidget Input WidgetCombo BoxFont Combo BoxLine Edit文本编辑框 Text EditSpin BoxDate/Time EditProgress BarKey Sequence Edit Display WidgetsLabelText BrowserProgress BarLCD N Qt控件
Layout Spacer
垂直布局QVBoxLayout //修改窗口标准名称w.setWindowTitle(垂直布局);//设置窗口大小w.resize(400,300);//船舰QVBoxLayout布局并且设置为父控件QVBoxLayout * mainlayoutnew 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 * hlayoutnew QHBoxLayout;//创建命令按钮控件添加到水平布局当中QPushButton *button1new QPushButton(命令按钮1);QPushButton *button2new QPushButton(命令按钮2);QPushButton *button3new QPushButton(命令按钮3);hlayout-addWidget(button1);hlayout-addWidget(button2);hlayout-addWidget(button3);//创建一个容器控件用来设置水平布局QWidget *containernew QWidget;container-setLayout(hlayout);//将容器控件添加到主容器的垂直布局当中QVBoxLayout *mainLayoutnew QVBoxLayout;mainLayout-addWidget(container);//设置窗口布局w.setLayout(mainLayout);网格布局 QGridLayout
头文件 源文件 button1new QPushButton(this);button1-setText(第一区:顶部菜单栏选项);button1-setFixedHeight(100);//让button1在水平和垂直方向上都尽可能扩展以占用更多的可用空间。button1-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button2new QPushButton(this);button2-setText(第二区:侧边栏选项);button2-setFixedWidth(150);button2-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button3new QPushButton(this);button3-setText(第三区:底部选项);button3-setFixedHeight(100);button3-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button4new QPushButton(this);button4-setText(第四区:子窗体选项);button4-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);pGrid_layoutsnew 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 *qLayoutnew QFormLayout(this);QLineEdit *le1new QLineEdit();QLineEdit *le2new QLineEdit();QLineEdit *le3new 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 * pb1new QPushButton(命令按钮,this);QPushButton * pb2new 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);//实例化两个命令按钮对象pb1new QPushButton(命令按钮,this);pb2new 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对象tbarnew QToolBar(this);tbar-setGeometry(20,20,200,90);//设置QStyle类对象进行实例化主要目的设置风格图标时系统自带QStyle *styQApplication::style(); //获取当前应用程序的全局样式对象指针; QApplication::style() 返回应用程序默认的QStyle对象QIcon icosty-standardIcon(QStyle::SP_TitleBarContextHelpButton);//设置QToolButton对象进行实例化tbuttonnew 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 QRadioButtonMainWindow::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 QUrlMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);this-setGeometry(400,300,500,300);clbnew 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 QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);this-setGeometry(400,300,500,300);dbbnew QDialogButtonBox(this);dbb-setGeometry(100,100,200,30);//传统按钮创建方式dbb-addButton(QDialogButtonBox::Cancel);dbb-button(QDialogButtonBox::Cancel)-setText(取 消);//这里是自定义按钮传统按钮只有ok,open,save,canncel...可以查帮助手册pbnew QPushButton(自定义);//将pb添加到dbb,并且设定ButtonRole为ActionRoledbb-addButton(pb,QDialogButtonBox::ActionRole);connect(dbb,SIGNAL(clicked(QAbstractButton *)),this, SLOT(dbbpbClicked(QAbstractButton*)));
}void MainWindow::dbbpbClicked(QAbstractButton *bt){if(btdbb-button(QDialogButtonBox::Cancel)){qDebug()您已经点击【取消】按钮Qt::endl;}else if(btpb){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 QMenuWidget::Widget(QWidget *parent): QWidget(parent)
{//组合框1gpb_1QGroupBox *gpb_1new QGroupBox(单选按钮组1);QRadioButton *rbtn_1new QRadioButton(RadioButton1);QRadioButton *rbtn_2new QRadioButton(RadioButton2);QRadioButton *rbtn_3new QRadioButton(RadioButton3);QVBoxLayout *vbly1new QVBoxLayout;vbly1-addWidget(rbtn_1);vbly1-addWidget(rbtn_2);vbly1-addWidget(rbtn_3);gpb_1-setLayout(vbly1);//组合框2gpb_2QGroupBox *gpb_2new QGroupBox(复选按钮组2);QCheckBox *cbx1new QCheckBox(checkbox1);QCheckBox *cbx2new QCheckBox(checkbox2);QCheckBox *cbx3new QCheckBox(checkbox3);//设置是否支持半选cbx2-setTristate(true);cbx2-setChecked(true);QVBoxLayout *vbly2new QVBoxLayout;vbly2-addWidget(cbx1);vbly2-addWidget(cbx2);vbly2-addWidget(cbx3);gpb_2-setLayout(vbly2);//组合框3gpb_3QGroupBox *gpb_3new QGroupBox(单选按钮和复选按钮组3);gpb_3-setCheckable(true);QRadioButton *rbtn_31new QRadioButton(RadioButton31);QRadioButton *rbtn_32new QRadioButton(RadioButton32);QRadioButton *rbtn_33new QRadioButton(RadioButton33);QCheckBox *cbx4new QCheckBox(checkbox4);QVBoxLayout *vbly3new QVBoxLayout;vbly3-addWidget(rbtn_31);vbly3-addWidget(rbtn_32);vbly3-addWidget(rbtn_33);vbly3-addWidget(cbx4);gpb_3-setLayout(vbly3);//组合框4gpb_4QGroupBox *gpb_4new QGroupBox(综合按钮组4);gpb_4-setCheckable(true);gpb_4-setChecked(true);QPushButton *pbtn_4new QPushButton(PushButton4);QPushButton *pbtn_5new QPushButton(PushButton5);pbtn_5-setChecked(true);pbtn_5-setCheckable(true);QPushButton *pbtn_6new QPushButton(PushButton6);//命令按钮添加子菜单QMenu *munew QMenu(this);mu-addAction(King);mu-addAction(Darren);mu-addAction(Mark);mu-addAction(Vico);pbtn_6-setMenu(mu);QVBoxLayout *vbly4new QVBoxLayout;vbly4-addWidget(pbtn_4);vbly4-addWidget(pbtn_5);vbly4-addWidget(pbtn_6);gpb_4-setLayout(vbly4);QGridLayout *gdlyoutnew 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 QDebugint main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.resize(300,200);/** QScrollArea当中有很多功能继承来自于QAbstractScrollArea* 滚动条外观是否漂亮取决于当前滚动条策略*///创建Qlabel用于显示图片QLabel *qljpgnew QLabel;//允许图片缩放以适应QLabelqljpg-setScaledContents(true);//加载图片QImage imagejpg(:/images/2.png);if (imagejpg.isNull()) {qDebug() Failed to load image!;} else {qljpg-setPixmap(QPixmap::fromImage(imagejpg));}//创建滚动区域QScrollArea *sAreanew QScrollArea;//图片居中//sArea-setAlignment(Qt::AlignCenter);//根据窗口比例显示//sArea-setWidgetResizable(true);//设置水平滚动条始终显示。sArea-setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//设置垂直滚动条始终隐藏sArea-setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//把QLabel添加到滚动区域sArea-setWidget(qljpg);//创建布局并添加滚动区域QGridLayout *glayoutnew QGridLayout;glayout-addWidget(sArea);w.setLayout(glayout);w.show();return a.exec();
}标签小部件Tab Widget
头文件
源文件
#include widget.h#includeQTabWidget
#includeQGridLayout
#includeQLabel
#includeQPushButton
#includeQLineEdit
#includeQMessageBoxWidget::Widget(QWidget *parent): QWidget(parent)
{this-setWindowTitle(标签小部件控件测试);this-setGeometry(300,200,600,400);tabWidgetUInew QTabWidget(this);tabWidgetUI-setGeometry(20,20,560,360);tabWidgetUI-show();bool m_showtabwidgetui1true;bool m_showtabwidgetui2true;if(m_showtabwidgetui1){QWidget *qwidget1new QWidget();tabWidgetUI-addTab(qwidget1,进程);QGridLayout *glayoutnew QGridLayout();QLabel *lab1new QLabel(请选择文件及文件夹);QLineEdit *ledit1new QLineEdit();QPushButton *pbt1new 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 *qwidget2new QWidget();tabWidgetUI-addTab(qwidget2,性能);}}void Widget::MsgCommit(){QMessageBox::information(NULL,testing,QMessageBox:命令按钮测试成功,QMessageBox::Ok);
} 框架Frame
在ui界面中设置两个frame_1和frame_2设置为网格布局
源文件
#include QFrameMainWindow::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
#includeQLabel
#includeQComboBox
#include QPushButton
#include QGridLayoutMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);QDockWidget *dwnew QDockWidget(停靠窗口部件测试,this);QLabel *labnew QLabel(学历层次);QComboBox *cbx new QComboBox();cbx-addItem(小学);cbx-addItem(初中);cbx-addItem(高中);cbx-addItem(大学);QPushButton *pbt1new QPushButton(清华大学);QPushButton *pbt2new QPushButton(北京大学);QGridLayout *glayoutnew 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 *wgtnew QWidget();wgt-setLayout(glayout);dw-setWidget(wgt);dw-setMaximumSize(300,300);
}视图Items Views
清单视图List View
头文件 源文件
#include QListView
#include QStringListModel
#include QMessageBoxWidget::Widget(QWidget *parent): QWidget(parent)
{resize(450,250);listview1new QListView(this);listview1-setGeometry(20,20,240,160);//初始化数据列表QStringList qlist;qlist.append(运动类篮球、足球);qlist.append(娱乐类看电影、写小说、听音乐);qlist.append(游戏类五子棋、扑克牌、中国象棋);qlist.append(旅游类国外旅游、国内旅游);//创建一个 QStringListModel 对象 listmode用于管理 qlist 中的数据。QStringListModel *listmodenew 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,兴趣爱好,你选择的类型为\nindex.data().toString());
}树视图Tree View
在ui中添加TreeView视图
头文件
源文件
#include QStandardItemMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);InitTreeViewFunc();
}MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::InitTreeViewFunc()
{//1.构造modelsItemModenew QStandardItemModel(ui-treeView);//等价于//sItemMode new QStandardItemModel(); // 1. 创建模型对象
ui-treeView-setModel(sItemMode); // 2. 将模型设置给视图//sItemMode-setHorizontalHeaderLabels(QStringList()QStringLiteral(编号)QStringLiteral(初中部|高中部));QListQStandardItem* item11;QStandardItem *item1new QStandardItem(QString::number(1));QStandardItem *item2new QStandardItem(初中部);//创建一级节点将它加入到sItemModelitem11.append(item1);item11.append(item2);sItemMode-appendRow(item11);//二级节点添加到第一个一级节点QListQStandardItem* item112;QStandardItem *item1121new QStandardItem(QString::number(2));QStandardItem *item1122new QStandardItem(QStringLiteral(一年级));item112.append(item1121);item112.append(item1122);item1-appendRow(item112);//三级节点添加到第一个二级节点QListQStandardItem* item1231;QStandardItem *item12311new QStandardItem(QString::number(3));QStandardItem *item12312new QStandardItem(QStringLiteral(一班));item1231.append(item12311);item1231.append(item12312);item1121-appendRow(item1231);QListQStandardItem* item1232;QStandardItem *item12321new QStandardItem(QString::number(3));QStandardItem *item12322new QStandardItem(QStringLiteral(二班));item1232.append(item12321);item1232.append(item12322);item1121-appendRow(item1232);QListQStandardItem* item21;QStandardItem *item3new QStandardItem(QString::number(1));QStandardItem *item4new 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 *stuModenew 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 *qitemnew QListWidgetItem(沁园春-雪);ui-listWidget-addItem(qitem);qitem-setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);QStringList slist;slist1北国风光千里冰封万里雪飘;slist2:望长城内外...;ui-listWidget-addItems(slist);}TreeWidget
源文件
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//添加第一级节点QTreeWidgetItem*topItem1new QTreeWidgetItem(ui-treeWidget);topItem1-setText(0,清华大学);ui-treeWidget-addTopLevelItem(topItem1);//隐藏表头ui-treeWidget-setHeaderHidden(true);//展开节点ui-treeWidget-expandAll();//二级节点添加到一级节点的topItem1QTreeWidgetItem *item11new QTreeWidgetItem(topItem1);item11-setText(0,清华大学建筑学院);item11-setCheckState(0,Qt::Checked);QTreeWidgetItem *item12new QTreeWidgetItem(topItem1);item12-setText(0,清华大学土木学院);item12-setCheckState(0,Qt::Checked);QTreeWidgetItem*topItem2new QTreeWidgetItem(ui-treeWidget);topItem2-setText(0,北京大学);ui-treeWidget-addTopLevelItem(topItem2);ui-treeWidget-setHeaderHidden(true);ui-treeWidget-expandAll();QTreeWidgetItem *item21new QTreeWidgetItem(topItem2);item21-setText(0,北京大学文学院);item21-setCheckState(0,Qt::Checked);
}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);QListQString strno;strno202201202202202203;QListQString strscore;strscore708712690;for(int i0;i3;i){int iCol0;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 QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);//设置主空格的显示位置及大小this-setGeometry(300,200,1000,600);comboboxnew 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);fontcomboboxnew QFontComboBox(this);qlabelsnew 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 QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);lineeditnew QLineEdit(this);lineedit-setGeometry(10,150,200,30);pushbuttonnew QPushButton(this);pushbutton-setText(点击我);qlabelynew 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您输入的内容为;qStrqStrlineedit-text();qlabely-setText(qStr);lineedit-clear();
} 文本编辑框 Text Edit
头文件
源文件
#include QDir
#include QTextStream
#include QCoreApplicationMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);plainteditnew QPlainTextEdit(this);plaintedit-setGeometry(10,250,400,200);radiobuttonnew 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%))});spinboxnew 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);dtenew QDateTimeEdit(QDateTime::currentDateTime(),this);dte-setGeometry(440,290,220,30);tenew QTimeEdit(QTime::currentTime(),this);te-setGeometry(440,330,200,30);denew QDateEdit(QDate::currentDate(),this);de-setGeometry(440,370,200,30);
}Progress Bar
头文件 源文件
hscrollbarnew QScrollBar(Qt::Horizontal,this);hscrollbar-setGeometry(0,500,1000,30);vscrollbarnew 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);ksenew 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(keyQKeySequence(tr(CtrlQ)))this-close();elseqDebug()key.toString()Qt::endl;
}Display Widgets
Label
在ui中添加Label更名为labeljpg 头文件
源文件
#include QMessageBox
#include QImageWidget::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 *qimgnew 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 QStringWidget::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 ayqfile.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 i1;i1000000;i){for(int j0;j1;j){ui-progressBar-setValue(i);}}
} LCD N
在ui界面中添加LCD Number和三个按钮命名如下。并把三个按钮都右键添加槽函数 头文件
源文件
#include QTimerWidget::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();iValues0;ui-pushbtn-display(iValues);ui-pushbtnstart-setEnabled(true);ui-pushbtnpause-setEnabled(true);ui-pushbtnreset-setEnabled(false);
}void Widget::InitFunc(){timersnew QTimer(this);timers-setInterval(1000);//定时周期为1stimers-stop();
}
void Widget::on_timerout(){iValues;ui-pushbtn-display(iValues);
}