qt如何根据输入的值创建动态控件。比如输入5创建五个label

qt如何根据输入的值创建动态控件。比如输入5创建五个label,第1张

// ----- 答案肯定是可以的 -----//

// 先创建原先的界面,用布局进行管理

QWidget *widgetMain = new QWidget()

// 加入一个输入框和按钮

QLineEdit *lineEdit = new QLineEdit(widgetMain)

QPushButton *btn = new QPushButton(widgetMain)

// 用水平布局将这2个控件框起,并且置于界面顶部

QHBoxLayout *horLayout = new QHBoxLayout()

horLayout->addWidget(lineEdit, 4)

horLayout->addWidget(btn, 1)        // 设置布局比例为4:1

// 然后添加一个全局布局控件

QVBoxLayout *verLayout = new QVBoxLayout(widgetMain)

verLayout->addLayout(horLayout)// 加入刚才的输入组,底部添加d簧

verLayout->addStretch()

// --------- 基本界面创建完成 -------------- //

// 关联处理动态创建

int nCnt = lineEdit->text().toInt() // 输入的个数

for (int i = 0 i < nCnt i++) {

    QLabel *label = new QLabel(widgetMain)

    // 插入之前的布局

    label->setText(QString("动态创建label %1).arg(i + 1))

    verLayout->insertWidget(1 + i, label)

}

// 大功告成

// 备注,以上代码纯手工,写法或其他错误请自行修改,仅作参考

首先,我们要编写一个主动态库,来实现我们自己的控件。

其次,还要写一个接口动态库,用来实现designer中调用我们自己的控件。这一步很关键。这个动态库中程序结构都是qt固定的。具体参见附录。

最后,编译写好的上面两个插件,要拷贝一些文件到相应目录下:

分别将主动态库和库文件拷贝到qt安装的bin和lib目录下;

将接口动态库和库文件拷贝到qt安装目录的plugins\designer目录下;

将主动态库的接口头文件拷贝到qt安装目录的include目录下;

这样,我们的写的控件就添加完成了。这时打开desinger就可以在工具条中看到我们写的控件了。我们就可以像其它控件一样使用这个控件了。

很简单,只需要在窗口中拖进一个QScrollArea控件,然后再将一个QWidget控件拖动到QScrollArea控件中成为它的子控件,这样只需要在程序中将新建的控件(父节点要设为这个QWidget),通过setGeometry函数将位置设置在QWidget上,注意当控件位置超出QScrollArea时,要将这个QWidget的size最初相应的拉长,拉大,这样QScrollArea就会自动添加一个滚动条了。

还是不懂的话请留言,方便咨询。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11730418.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存