输入窗体

微调框

它可以调节值,具有范围,可以设置每次的波动大小,可以添加前缀和后缀

QSpinBox and QDoubleSpinBox
#设置
函数 描述
void setDisplayIntegerBase(int base) 显示的进制
void setMaximum(int max) 最大值
void setMinimum(int min) 最小值
void setPrefix(const QString &prefix) 前缀
void setRange(int minimum, int maximum) 范围
void setSingleStep(int val) 波动值
void setSuffix(const QString &suffix) 后缀 void setvalue()
setWrapping(true) 设置循环
virtual QString textFromValue(int value) 文本显示格式
#signal
void    valueChanged(double d)
void    valueChanged(const QString &text)
/*
 * 微调框的的属性
 * 前缀,后缀,步长,范围
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);
    // ...
    QSpinBox *pspinbox = new QSpinBox(this);
    pspinbox->setRange(0, 100);           // 范围
    pspinbox->setSingleStep(1);           // 步长
    pspinbox->setValue(10);               // 当前值
    pspinbox->setPrefix("下载进度 ");      // 前缀
    pspinbox->setSuffix(" %");            // 后缀
    pspinbox->setWrapping(true);          // 开启循环
    QTimer *ptimer=new QTimer(this);
    connect(ptimer,&QTimer::timeout,[&pspinbox]{
        int value=pspinbox->value()+1;
        pspinbox->setValue(value);
    });
    ptimer->start(1000);
    connect(pspinbox, QOverload<int>::of(&QSpinBox::valueChanged),
        [=](int value)
    {
        qDebug() << "Value : "  << value;
        qDebug() << "Text : "  << pspinbox->text();
    });
    //QDoubleSpinBox相似
    layout->addWidget(pspinbox);
    this->setFixedSize(300,300);
    this->show();
}
QSlider

水平滑动条的微调框,,步长,刻度

void    setTickInterval(int ti)//刻度间隔值
void    setTickPosition(QSlider::TickPosition position)//当前位置
#signals
valueChanged()  Emitted when the slider's value has changed. The tracking() determines whether this signal is emitted during user interaction.
sliderPressed() Emitted when the user starts to drag the slider.
sliderMoved()   Emitted when the user drags the slider.
sliderReleased()    Emitted when the user releases the slider.
// 滑动条
QSlider *pSlider = new QSlider(this);
pSlider->setOrientation(Qt::Horizontal);  // 水平方向
pSlider->setMinimum(nMin);  // 最小值
pSlider->setMaximum(nMax);  // 最大值
pSlider->setSingleStep(nSingleStep);  // 步长
/*
 * 滑动条的属性
 * 方向,范围,步长
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);
    // 滑动条
    QSlider *pslider = new QSlider(this);
    pslider->setOrientation(Qt::Horizontal);            // 水平方向
    pslider->setMinimum(0);                             // 最小值
    pslider->setMaximum(100);                           // 最大值
    pslider->setValue(0);
    pslider->setSingleStep(1);                          // 步长
    pslider->setTickInterval(100/5);                    //刻度间隔
    pslider->setTickPosition(QSlider::TicksAbove);      //刻度位置
    connect(pslider,QOverload<int>::of(&QSlider::valueChanged),[&pslider](int i){
       qDebug()<<i;
    });
     qDebug()<<pslider->value();
    layout->addWidget(pslider);
    this->setFixedSize(300,300);
    this->show();
}
进度条QProgressBar

文本,进度,那就提供了范围,文本的格式

#功能设置
函数 功能
void setAlignment(Qt::Alignment alignment) 对齐方式
void setFormat(const QString &format) 文本格式,可重写
void setInvertedAppearance(bool invert) 反向进度读取
void setTextDirection(QProgressBar::Direction textDirection) 文字方向
void setTextVisible(bool visible) 文字可见
#slots
void    reset()
void    setMaximum(int maximum)
void    setMinimum(int minimum)
void    setOrientation(Qt::Orientation)//水平还是垂直
void    setRange(int minimum, int maximum)
void    setValue(int value)
#signals
void    valueChanged(int value)
/*
 * 进度条
 * 方向,范围,显示方式,水平,对齐
 * 
 * 程序在qt creator5.7运行,在第一个connect处发现申请内存异常
 * 加上一个语句就不出现运行时内存异常的错误
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);
    QTimer *ptimer= new QTimer(this);
    // 滑动条
    QProgressBar *ppro_bar = new QProgressBar(this);
    ppro_bar->setOrientation(Qt::Horizontal);    // 水平方向
    ppro_bar->setMinimum(0);                     // 最小值
    ppro_bar->setMaximum(100);                   // 最大值
    ppro_bar->setValue(50);                      // 当前进度
    ppro_bar->setInvertedAppearance(true);       // 反向读取
    ppro_bar->setTextDirection(QProgressBar::BottomToTop);//文字旋转了
                                                  //设置显示文本的格式

    qDebug()<<" ";//加上这个程序没出现运行时内存分配异常
    connect(ptimer,&QTimer::timeout,[&ppro_bar]{
         ppro_bar->setValue((ppro_bar->value())+10);
        if(ppro_bar->value()>=100)ppro_bar->setValue(0);
    });
    connect(ppro_bar,static_cast<void (QProgressBar::*)(int)>(&QProgressBar::valueChanged),[&ppro_bar]{
        ppro_bar->setFormat(QString("当前的值:%1%").
                            arg(QString::number(ppro_bar->value()-ppro_bar->minimum(),10)));
    });


    ptimer->start(1000);
    layout->addWidget(ppro_bar);

    this->setFixedSize(300,300);
    this->show();
}
QScrollArea

he QScrollArea class provides a scrolling view onto another widget.
可以滚动的区域

#功能设置
函数 描述
void ignment(Qt::Alignment) 对齐方式
void setWidget(QWidget *widget) addwidget
void setWidgetResizable(bool resizable) 自动调整大小
/*
 * 滚动区域(失败的程序,随便看看代码就好)
 * setwidget
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);
    //滚动区域
    QScrollArea *pscroll_area=new QScrollArea(this);
    QLabel *plabel=new QLabel;
    QPixmap pixmap(":/image/wz2.jpg");
    pixmap.scaled(0.5,1);
    plabel->setPixmap(pixmap);
    pscroll_area->setWidget(plabel);        //addwidget
    pscroll_area->setAlignment(Qt::AlignCenter);
//    pscroll_area->widget()->resize(200,200);//手动调节大小
    pscroll_area->setWidgetResizable(true);  // 自动调整大小

    layout->addWidget(pscroll_area);

    this->setFixedSize(300,300);
    this->show();
}
QToolBox

The QToolBox class provides a column of tabbed widget items.
提供的是一个储存widget的列表
既然是储存,那就和数组差不多的原理,可以添加,插入,减少元素,同时可以快速找到元素,元素的数量,

#具备的函数
函数 描述
int addItem(QWidget *widget, const QIcon &iconSet, const QString &text) 添加元素
int addItem(QWidget *w, const QString &text)
int count() const 元素的数量
int currentIndex() const 现在的index
QWidget * currentWidget() const 现在的widget
int indexOf(QWidget *widget) const 返回查找的widget的位置
int insertItem(int index, QWidget *widget, const QIcon &icon, const QString &text) 插入
int insertItem(int index, QWidget *widget, const QString &text)
bool isItemEnabled(int index) const
QIcon itemIcon(int index) const 返回icon
QString itemText(int index) const 返回text
QString itemToolTip(int index) const 返回提示
void removeItem(int index) 移除
void setItemEnabled(int index, bool enabled)
void setItemIcon(int index, const QIcon &icon) 设置icon
void setItemText(int index, const QString &text) 设置text
void setItemToolTip(int index, const QString &toolTip) 设置提示
void setCurrentIndex(int index) 设置现在的index,slot
#signals
void    currentChanged(int index)
#include "mywidget.h"
#include "loadstyle.h"
#include<QVBoxLayout>
#include<QString>
#include<QPixmap>
#include<QLabel>
#include<QVBoxLayout>
#include<QDebug>
#include<QTimer>
#include<QHBoxLayout>
#include<QStringList>
#include<QScrollArea>
#include<QDoubleSpinBox>
#include<QToolbox>
#include<QGroupBox>
#include<QLabel>
/*
 * 三个分组,每个组5人
 *
*/
mywidget::mywidget()
{
    setWindowTitle("my widget test");
    QVBoxLayout *layout=new QVBoxLayout(this);         //整体的布局

    QToolBox *ptool_box=new QToolBox(this);
    QStringList groups;                                 //分组的名称
    groups<<"猴子1"<<"猴子2"<<"猴子3";
    for(int i=0;i<3;i++)
    {
        QGroupBox *pgroup=new QGroupBox(this);          //分组
        QVBoxLayout *pvbox_layout=new QVBoxLayout(pgroup);

        for(int j=0;j<5;j++)
        {
            pvbox_layout->addWidget(initperson(j));
        }

        ptool_box->addItem(pgroup,groups.at(i));

    }

    layout->addWidget(ptool_box);

    this->setFixedSize(400,500);
    this->show();
}

QWidget *mywidget::initperson(const int i)
{
    QWidget *person=new QWidget(this);
    QHBoxLayout *phbox_layout=new QHBoxLayout();
    QVBoxLayout *pvbox_layout=new QVBoxLayout();
    QLabel *phead=new QLabel(this);
    QLabel *pname=new QLabel(this);
    QLabel *psay=new QLabel(this);
    QPixmap ppixmap(":/image/hz"+QString::number(i+1,10)+".jpg");
    ppixmap=ppixmap.scaled(QSize(100,100),Qt::KeepAspectRatio);
    phead->setPixmap(ppixmap);
    pname->setText("孙悟空"+QString::number(i+1,10));
    psay->setText("我是第"+QString::number(i+1,10)+"个最好的孙悟空");
    pvbox_layout->addWidget(pname);
    pvbox_layout->addWidget(psay);
    phbox_layout->addWidget(phead);
    phbox_layout->addLayout(pvbox_layout);
    person->setLayout(phbox_layout);
    person->setFixedSize(300,100);
    return person;

}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_33564134/article/details/81533488