【Qt-Box】

发布时间:2023年12月25日

■ QToolBox

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0, 0, 800, 480);
    toolBox = new QToolBox(this);
    toolBox->setGeometry(300, 50, 200, 250);
    /* 设置toolBox的样式,此处设置为30%不透明度的黑色 */
    toolBox->setStyleSheet("QToolBox {background-color:rgba(0, 0, 0, 30%);}");

    for(int i = 0; i < 2; i++){
        vBoxLayout[i] = new QVBoxLayout();
        groupBox[i] = new QGroupBox(this);
    }

    /* 字符串链表 */
    QList <QString>strList;
    strList<<"李白"<<"王照君"<<"李元芳"<<"程咬金"<<"钟馗"<<"上官婉儿";

    /* 字符串图标链表 */
    QList <QString>iconsList;
    iconsList<<":/icons/libai"<<":/icons/wangzhaojun"
            <<":/icons/liyuanfang"<<":/icons/chengyaojin"
           <<":/icons/zhongkui"<<":/icons/shangguanwaner";

    for(int i = 0; i < 6; i++){
        toolButton[i] = new QToolButton();
        /* 设置toolButton图标 */
        toolButton[i]->setIcon(QIcon(iconsList[i]));
        /* 设置toolButton的文本 */
        toolButton[i]->setText(strList[i]);
        /* 设置toolButton的大小 */
        toolButton[i]->setFixedSize(150, 40);
        /* 设置toolButton的setToolButtonStyle的样式 */
        toolButton[i]->setToolButtonStyle(
                    Qt::ToolButtonTextBesideIcon
                    );
        if( i < 3 ) {
            /* 将toolButton添加到时垂直布局 */
            vBoxLayout[0]->addWidget(toolButton[i]);
            /* 添加一个伸缩量1 */
            vBoxLayout[0]->addStretch(1);
        } else {
            vBoxLayout[1]->addWidget(toolButton[i]);
            vBoxLayout[1]->addStretch(1);
        }
    }
    /* 将垂直布局的内容添加到组框groupBox */
    groupBox[0]->setLayout(vBoxLayout[0]);
    groupBox[1]->setLayout(vBoxLayout[1]);

    /* 将组框加入QToolBox里 */
    toolBox->addItem(groupBox[0],"我的好友");
    toolBox->addItem(groupBox[1],"黑名单");
}

MainWindow::~MainWindow()
{
}

■ QGroupBox

/* 设置主窗体位置与大小 */
this->setGeometry(0, 0, 800, 480);
/* 以标题为“QGroupBox示例”实例化groupBox对象 */
groupBox = new QGroupBox(tr("QGroupBox示例"), this);
groupBox->setGeometry(300, 100, 300, 200);
vBoxLayout = new QVBoxLayout();
/* 字符串链表 */
QList <QString>list;
list<<"选项一"<<"选项二"<<"选项三";
for(int i = 0; i < 3; i++){
    radioButton[i] = new QRadioButton();
    radioButton[i]->setText(list[i]);
    /* 在vBoxLayout添加radioButton */
    vBoxLayout->addWidget(radioButton[i]);
}
/* 添加一个伸缩量1 */
vBoxLayout->addStretch(1);
/* vBoxLayout布局设置为groupBox布局 */
groupBox->setLayout(vBoxLayout);


QGroupBox {
    border-width:1px;   //线的粗细
    border-style:solid;
    border-color:lightGray;   //颜色,
    margin-top: 0.5ex;  //文字在方框中位置的偏离度
}
QGroupBox::title {
    subcontrol-origin: margin;
    subcontrol-position: top left;
    left:25px;       //线的偏离度
    margin-left: 0px;
    padding:0 1px;   //文字在方框中位置的偏离度
}
QGroupBox::title {
    subcontrol-origin: margin;
    position: relative;
    left: 12px;
}
ui->groupBox->setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E0E0E0, stop: 1 #FFFFFF);"
                                " border-radius: 5px; margin-top: 1ex; ");//border: 2px solid gray;

■ QCheckBox

示例一: 三态按钮 ,
QCheckBox{
        spacing: 5px;
        color: white;
}

QCheckBox::indicator {
        width: 50px;
        height: 50px;
}

QCheckBox::indicator:enabled:unchecked {
        image: url(:/images/unchecked.png);
}

QCheckBox::indicator:enabled:checked {
        image: url(:/images/checked.png);
}

QCheckBox::indicator:enabled:indeterminate {
        image: url(:/images/indeterminate.png);
}
/* 实例化对象 */
checkBox = new QCheckBox(this);
/* 设置QCheckBox位置和显示大小 */
checkBox->setGeometry(350, 200, 250, 50);
/* 初始化三态复选框的状态为Checked */
checkBox->setCheckState(Qt::Checked);
/* 设置显示的文本 */
checkBox->setText("初始化为Checked状态");
/* 开启三态模式,必须开启,否则只有两种状态,即Checked和Unchecked */
checkBox->setTristate();
/* 连接checkBox的信号stateChanged(int),与我们定义的槽checkBoxStateChanged(int)连接 */
connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(checkBoxStateChanged(int)));
/* 槽函数的实现 */
void MainWindow::checkBoxStateChanged(int state)
{
    /* 判断checkBox的state状态,设置checkBox的文本 */
    switch (state) {
    case Qt::Checked:
        /* 选中状态 */
        checkBox->setText("Checked状态");
        break;
    case Qt::Unchecked:
        /* 未选中状态 */
        checkBox->setText("Unchecked状态");
        break;
    case Qt::PartiallyChecked:
        /* 半选状态 */
        checkBox->setText("PartiallyChecked状态");
        break;
    default:
        break;
    }
}

■ QComboBox

示例一:
/* 实例化对象 */
comboBox = new QComboBox(this);

/* 设置comboBox的显示位置与大小 */
comboBox->setGeometry(300, 200, 150, 30);
/* 添加项,我们添加三个省份,作为comboBox的三个选项 */
comboBox->addItem("广东(默认)");
comboBox->addItem("湖南");
comboBox->addItem("四川");

/* 信号槽连接 */
connect(comboBox, SIGNAL(currentIndexChanged(int)), this,
        SLOT(comboBoxIndexChanged(int)));
            
void MainWindow::comboBoxIndexChanged(int index)
{
    /* 打印出选择的省份 */
    qDebug()<<"您选择的省份是"<< comboBox->itemText(index)<<endl;
}

■ QFontComboBox

/* 实例化对象 */
fontComboBox = new QFontComboBox(this);
label = new QLabel(this);

/* 设置显示的位置与大小 */
fontComboBox->setGeometry(280, 200, 200, 30);
label->setGeometry(280, 250, 300, 50);

/* 信号与槽连接 */
connect(fontComboBox, SIGNAL(currentFontChanged(QFont)), this,
       SLOT(fontComboBoxFontChanged(QFont)));

MainWindow::~MainWindow()
{
}

/* 槽函数实现 */
void MainWindow::fontComboBoxFontChanged(QFont font)
{
    /* 将label里的文本内容设置为所选择的字体 */
    label->setFont(font);
    /* 定义一个字符串接收当前项的字体 */
    QString str = "用此标签显示字体效果\n设置的字体为:" +
            fontComboBox->itemText(fontComboBox->currentIndex());

    /* 将字符串的内容作为label的显示内容 */
    label->setText(str);
}

■ QSpinBox

spinBox = new QSpinBox(this);
spinBox->setGeometry(350, 200, 150, 30);
/* 设置范围0~100 */
spinBox->setRange(0, 100);
/* 设置步长为10 */
spinBox->setSingleStep(10);
/* 设置初始值为100 */
spinBox->setValue(100);
/* 设置后缀 */
spinBox->setSuffix("%不透明度");
/* 信号槽连接 */
connect(spinBox,SIGNAL(valueChanged(int)), this,  SLOT(spinBoxValueChanged(int)));  
void MainWindow::spinBoxValueChanged(int opacity)
{
    /* 转换为double数据类型 */
    double  dobleopacity = (double)opacity / 100;        
    /* 设置窗体不透明度,范围是0.0~1.0。1则为不透明,0为全透明 */
    this->setWindowOpacity(dobleopacity);
}

■ QDoubleSpinBox

    /* 实例化和设置显示的位置与大小 */
    doubleSpinBox = new QDoubleSpinBox(this);
    doubleSpinBox->setGeometry((this->width() - 200) / 2,
                               (this->height() - 30) / 2,
                               200, 30);
    /* 设置前缀 */
    doubleSpinBox->setPrefix("窗口大小");
    /* 设置后缀 */
    doubleSpinBox->setSuffix("%");
    /* 设置范围 */
    doubleSpinBox->setRange(50.00, 100.00);
    /* 设置初始值 */
    doubleSpinBox->setValue(100.00);
    /* 设置步长 */
    doubleSpinBox->setSingleStep(0.1);
    /* 信号槽连接 */
    connect(doubleSpinBox, SIGNAL(valueChanged(double)),
            SLOT(doubleSpinBoxValueChanged(double)));

void MainWindow::doubleSpinBoxValueChanged(double value)
{
    /* 重新计算窗口的宽与高 */
    int w = 800 * value / 100;
    int h = 480 * value / 100;
    /* 重新设置窗口的宽与高 */
    this->setGeometry(0, 0, w, h);
    /* 重新设置doubleSpinBox的显示位置 */
    doubleSpinBox->setGeometry((this->width() - 200) / 2,
                               (this->height() - 30) / 2,
                               200, 30);
}




文章来源:https://blog.csdn.net/sinat_23896491/article/details/135202759
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。