一 Group Box:组合框
#include "widget.h"
#include<QGroupBox>
#include<QRadioButton>
#include<QPushButton>
#include<QVBoxLayout>//可以在水平方向和垂直方向进行排列的控件,QHBoxLayout/QVBoxLayout
#include <QGridLayout>
#include <QCheckBox>
#include <QMenu>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//组合框1:gpb_1
QGroupBox *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_1
QGroupBox *gpb_2 = new QGroupBox("复选按钮组2");
//gpb_2->setCheckable(true);
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_3
QGroupBox *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");
cbx4->setCheckable(true);
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_4
QGroupBox *gpb_4 = new QGroupBox("综合按钮组3");
gpb_4->setCheckable(true);
QPushButton * pbtn_4 = new QPushButton("QPushButton4");
QPushButton * pbtn_5 = new QPushButton("QPushButton5");
pbtn_5->setCheckable(true);
QPushButton * pbtn_6 = new QPushButton("QPushButton6");
//命令按钮添加子菜单
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);
}
Widget::~Widget()
{
}
二 Scroll Area:滚动区域。
#include "widget.h"
#include <QApplication>
#include <QLabel>
#include <QScrollArea>
#include <QGridLayout>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.resize(300,200);
/*
* QScrollArea当中有很多功能继承来自于QAbstractScrollArea
* 滚动条外观是否漂亮取决于当前滚动条策略,有时间大家可以研究一下,查官网
*
*/
QLabel *qljpg = new QLabel;
qljpg->setScaledContents(true);
QImage imagejpg(":/new/prefix1/Saved Pictures/02.jpg");
qljpg->setPixmap(QPixmap::fromImage(imagejpg));
QScrollArea *sArea = new QScrollArea;
//根据窗口比例显示出来
//sArea->setWidgetResizable(true);
//居中
sArea->setAlignment(Qt::AlignCenter);
sArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
sArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
sArea->setWidget(qljpg);
QGridLayout *glayout = new QGridLayout;
glayout->addWidget(sArea);
w.setLayout(glayout);
w.show();
return a.exec();
}
三Tab Widget:标签小部件。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTabWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
QTabWidget *tabWidgetUI;
private slots:
void MsgCommit();
};
#endif // WIDGET_H
#include "widget.h"
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;
//bool m_showtabwidgetui3 = false;
//bool m_showtabwidgetui4 = false;
if(m_showtabwidgetui1)
{
QWidget *qwidget1 = new QWidget();
tabWidgetUI->addTab(qwidget1,"进程");
//布局
QGridLayout *glayout = new QGridLayout();
QLabel *label = new QLabel("请选择文件及文件夹:");
QLineEdit *ledit1 = new QLineEdit();
QPushButton *qbt1 = new QPushButton("消息框...");
connect(qbt1,SIGNAL(clicked(bool)),this, SLOT(MsgCommit()));
glayout->addWidget(label,0,0);
glayout->addWidget(ledit1,0,1);
glayout->addWidget(qbt1,0,3);
qwidget1->setLayout(glayout);
}
if(m_showtabwidgetui2)
{
QWidget *qwidget2 = new QWidget();
tabWidgetUI->addTab(qwidget2,"性能");
}
// if(m_showtabwidgetui3)
// {
// QWidget *qwidget3 = new QWidget();
// tabWidgetUI->addTab(qwidget3,"应用历史记录");
// }
// if(m_showtabwidgetui4)
// {
// QWidget *qwidget4 = new QWidget();
// tabWidgetUI->addTab(qwidget4,"启动");
// }
}
Widget::~Widget()
{
}
void Widget::MsgCommit()
{
QMessageBox::information(NULL,"testing","QMessageBox:命令按钮测试成功",QMessageBox::Ok);
}
四 Frame:框架
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFrame>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("Frame框架控件测试");
ui->frame_1->setStyleSheet("background-color:yellow");
ui->frame_2->setStyleSheet("background-color:green");
ui->frame_1->setLineWidth(2);
ui->frame_1->setMidLineWidth(2);
ui->frame_1->setFrameShape(QFrame::Box);
ui->frame_1->setFrameShadow(QFrame::Raised);
ui->frame_2->setLineWidth(2);
ui->frame_2->setMidLineWidth(4);
ui->frame_2->setFrameShape(QFrame::Box);
ui->frame_2->setFrameShadow(QFrame::Sunken);
}
Widget::~Widget()
{
delete ui;
}
五 Dock Widget:停靠窗体部件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QLabel>
#include <QComboBox>
#include <QGridLayout>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDockWidget *dw = new QDockWidget("停靠窗口部件测试Dock Widget---linke",this);
//设置颜色
QPalette pal;
pal.setColor(QPalette::Window,Qt::cyan);
//具体来说,QPalette::Background在官方文档中已经被指出废除,
//建议使用QPalette::Window来代替
dw->setAutoFillBackground(true);
dw->setPalette(pal);
//学历层次
QLabel * lab = new QLabel("学历层次");
QComboBox * cbx = new QComboBox();
cbx->addItem("小学");
cbx->addItem("初中");
cbx->addItem("高中");
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);
}
MainWindow::~MainWindow()
{
delete ui;
}