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)

}

// 大功告成

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

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥实现方法如下: 构造函数中加入: QTimer *timer = new QTimer(this)connect(timer,SINGAL(timeout()),this,SLOT(timer_deal_slot_function()))槽函数这样写:(获取系统时间) QDateTime dateTime = QDateTime::currentDateTime()int y=dateTime.date().year()int m=dateTime.date().month()int d=dateTime.date().day()QString strTime=dateTime.time().toString()ui->label->setText(strTime+" "+QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d))//显示时间格式为例如 12:24:33 2008/8/28 ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

#ifndef WIDGET_H

#define WIDGET_H

#include <QtGui/QWidget>

#include <QPushButton>

#include <QLabel>

#include <QHBoxLayout>

class Widget : public QWidget

{

Q_OBJECT

public:

Widget(QWidget *parent = 0)

~Widget()

QPushButton *clearNO,*addNO

QLabel *label

QHBoxLayout *qhboxlayout

private slots:

void clearNOhandle()

void addNOhandle()

}

#endif // WIDGET_H

///////////widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)

: QWidget(parent)

{

clearNO =new QPushButton("CLEAR")

addNO =new QPushButton("ADD")

label =new QLabel("0")

qhboxlayout =new QHBoxLayout(this)

qhboxlayout->addWidget(label)

qhboxlayout->addWidget(clearNO)

qhboxlayout->addWidget(addNO)

connect(clearNO,SIGNAL(clicked()),this,SLOT(clearNOhandle()))

connect(addNO,SIGNAL(clicked()),this,SLOT(addNOhandle()))

}

void Widget::addNOhandle(){

QString nostr

int no

nostr = label->text()

no = nostr.toInt()

no++

nostr.setNum(no)

label->setText(nostr)

}

////////main函数

void Widget::clearNOhandle(){

label->setText("0")

}

Widget::~Widget()

{

}

#include <QtGui/QApplication>

#include "widget.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv)

Widget w

w.show()

return a.exec()

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存