QT基础- 界面创建控件和布局管理

需要知识点:

QGridLayout         网格布局管理器

QHBoxLayout         水平的布局嵌套器

QVBoxLayout       垂直的布局嵌套器(可以理解为你在界面上创建了布局,然后里面再嵌套一个水平或者垂直布局) 

QFormLayout        表格布局

QStackedLayout        层叠布局

这里布局是可以嵌套的

关于这块内容可以详细看下这个博客内容很详细:

Qt学习之路14--布局管理器(QGridLayout)_一念之间、-CSDN博客_qgridlayout

4.3 QT学习之路 - 随笔分类 - 诺谦 - 博客园

然后这些布局如果复杂点的,可能会很难处理,比如下面这样,所以简单点布局可以这样弄。

下面说说要怎么创建和管理这些控件

比如:我们现在有个需求要你根据数据类型创建相应的文本控件 。要怎么做呢?

1.首先肯定确定数据类型然后再确定创建什么类型控件

// 手写csdn这个布局好乱啊  懒得弄了
//.h里保存创建的控件
QVector<QObject *> save_edit; 
//cpp文件
void createide(int row)
{
    
    QVariant::type type = "你的数据"

    switch(type)
    {
        case QVariant::Int:
        {
        // this 是当前界面
        QSpinBox *spinbox = new QSpinBox(this);
        // layout 是布局管理器
        layout->addWidget(spinbox, row, 2, 1, 1);
        save_edit.append(spinbox);
        break;
        }
    case QVariant::Double:
    {
        // this 是当前界面
        QDoubleSpinBox *spinbox = new QDoubleSpinBox(this);
        // layout 是布局管理器
        layout->addWidget(spinbox, row, 2, 1, 1);
        save_edit.append(spinbox);
        break;
    }
    case QVariant::String:
    {
        QLineEdit *edit =  new QLineEdit(this);
        layout->addWidget(lineedit, row, 2, 1, 1);
        save_edit.append(spinbox);
        break;
    }
    }
}
// 在这个创建完成函数调用后面添加一个QScollarea控件并把布局添加进去,至于为啥最后写的有
// ui.scrollarea->widget()->setLayout(_layout);

2.根据创建的类型操作

这里操作比如获取创建控件值

QString getide(int row)
{
    auto type = save_edit.at(row);
    if(type->inherits(QComboBox))
    {
        QComboBox *result = qobject_cast<QComboBox *>(_save_edit.at(id));
        return result->currentText();
    }
    else if(type->inherits(QDoubleSpinBox))
    {
        QDoubleSpinBox *result = qobject_cast<QDoubleSpinBox *>(_save_edit.at(id));
        return QString::number(result->value(),'f',2);
    }
    // 省略其他类型
}

然而呢,你上面弄完了,会发现一个问题就是你控件创建多了,就会挤在一起,这里建议加一个QScrollArea控件,把布局管理器塞到里面就可以了。

QT的自动滚动区QScrollArea的用法,图文详解_野生猿-群号1025127672-CSDN博客_qscrollarea

3.最后展示下效果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路奇怪

有钱出钱,没钱多出编程主意啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值