Hello,Qt5(8)

QCheckBox复选框

  1. 继承QAbstractButton,支持快捷键

  1. 多组QCheckBox可以分别放在QButtonGroup或QWidget中实现不同属性的设置

属性

  1. setText() 设置文本

  1. const bool isChecked() 获取选中状态

  1. void setChecked() 设置选中状态

  1. setAutoExclusive() 设置排他性

信号

  1. clicked(bool)信号 点击触发

  1. toggled(bool)信号 状态发生改变时触发

QButtonGroup

属性

  1. addButton(QAbstractButton *button) //增加按钮

  1. setExclusive() //设置排他性

信号

  1. buttonClicked/Presses/Released(QAbstractButton *button/int id)信号

  1. buttonToggled(QAbstractButton *button/int id, bool checked)信号

QRadioButton单选框

  1. 类似QCheckBox,但默认单选

TestQRadioButton::TestQRadioButton(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    QRadioButton *rb1 = new QRadioButton("QRadioButton01");
    QRadioButton *rb2 = new QRadioButton("QRadioButton02");
    QRadioButton *rb3 = new QRadioButton("QRadioButton03");

    QPushButton *pb1 = new QPushButton("Save");
    QObject::connect(pb1, SIGNAL(clicked()), this, SLOT(Save()));

    QButtonGroup *bg = new QButtonGroup(this);
    bg->setObjectName("buttongroup");
    bg->addButton(rb1);
    bg->addButton(rb2);
    bg->addButton(rb3);

    QVBoxLayout *vb = new QVBoxLayout(this);
    for (int i = 0; i < bg->buttons().size(); ++i) //遍历QButtonGroup获取节点
    {
        vb->addWidget(bg->buttons()[i]);
    }
    vb->addWidget(pb1);
}

void TestQRadioButton::Save()
{
    QButtonGroup *group = this->findChild<QButtonGroup *>("buttongroup"); //获取子节点
    if (group)
    {
        QRadioButton *rb = (QRadioButton *)group->checkedButton(); //获取选中属性
        if (!rb)
        {
            QMessageBox::warning(this, "warn", "Please checked!");
            return;
        }
        QMessageBox::information(this, "info", rb->text());
    }
}

QComboBox下拉列表

  1. 文本编辑模式,相当于QLineEdit

  1. 可以添加图标

属性

  1. setEditable(bool) //设置编辑模式

  1. addItem(const QString/QIcon/QStringList, const QVariant)

addItems(constant QStringList) //新增数据

  1. insertItem(int, const QIcon, const QString, QVariant)

insertItems(int, const QStringList) //插入数据

  1. removeItem(int)

  1. [slot] void QComboBox::clearEditText() //编辑模式时清空编辑框内容

[slot] void QComboBox::clear() //删除数据

信号

  1. void activated(int/const QString) 用户选中激发

  1. void currentIndexChanged(int/const QString) 索引改变(用户选中、代码调用)激发

  1. void currentTextChanged(const QString) 文本改变激发

  1. void currentTextChanged(const QString) 编辑模式时文本改变激发

  1. void highlighted(int/const QString) 在列表项中移动时激发

QVariant实现向QComboBoxch插入自定义数据

struct MyType
{
    int x = 0;
    int y = 0;
};

Q_DECLARE_METATYPE(MyType); //注册自定义类型

void TestQVariant::Click()
{
    qDebug() << ui.comboBox->itemText(0); //取ComboBox中的文本
    QVariant var = ui.comboBox->itemData(0); //取ComboBox中的数据
    qDebug() << "var.value<MyType>().x = " << var.value<MyType>().x; //取值
}

TestQVariant::TestQVariant(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    MyType my;
    my.x = 101;
    QVariant var;
    var.setValue(my); //传值
    ui.comboBox->addItem("item", var);
}

QSlider滑动条

属性

  1. setRange(int min, int max) 设置范围

  1. setSingleStep(键盘) 设置按键一次移动多少值

  1. setPageStep(鼠标) 设置鼠标一次移动多少页

  1. setOrientation(Horizontal/Vertical) 设置拖动按钮垂直/水平

信号

  1. void sliderMoved(int) 鼠标拖动时激发

  1. void sliderPressed() 点击拖动按钮时激发

  1. void sliderReleased() 释放拖动按钮时激发

  1. void valueChanged(int) 值改变时激发

qss设置

QSlider::groove{ //滑动槽
border:1px solid #999999;
border-radius:10px;
}
QSlider::handle{ //拖动按钮
margin:-10px 0;
}
QSlider::sub-page{ //设置滑动槽左侧颜色
}
QSlider::add-page{ //设置滑动槽右侧颜色
}

重载实现自定义控件

在Qt设计师界面对原控件提升即可转换为自定义控件,注意转换时的

void XSlider::mousePressEvent(QMouseEvent *e)
{
    qDebug() << e->pos().x();
    QSlider::mousePressEvent(e);
    double p = (double)e->pos().x() / (double)width();
    int val = p *(maximum() - minimum()) + minimum();
    setValue(val);
}

XSlider::XSlider(QWidget *p) : QSlider(p)
{
}

XSlider::~XSlider()
{
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值