48-Qt控件详解:Buttons Containers2

一 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;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值