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)

}

// 大功告成

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

首先我们在界面中添加一个QLabel控件。

在控件上边下边分别添加一个竖直的d簧,选中这三个控件,然后点击竖直布局,如下图所示。布局结果如右图。

然后在上次布局的两侧添加水平的d簧,选中两个d簧和上次的布局,点击水平布局。布局效果如图

最后选中最外层的窗口,然后点击水平或竖直布局,进行整体布局

布局效果如下图,现在可以运行一下,然后拖动界面改变大小来试一下效果了。

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

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

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

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

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

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

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


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

原文地址: http://outofmemory.cn/bake/11657841.html

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

发表评论

登录后才能评论

评论列表(0条)

保存