2、QT中创建一个Button

QPushButton *button1 = new QPushButton("Bord Test",this);  //创建一个名字为Bord Test的按钮
button1->move(100,10);                               //按钮显示在主窗口的100,10坐标处
 
QVector<QPushButton *> buttons;   //定义buttons 数组,后续创建多个按钮
QVector<QString > names;                        //定义names 数组,后续为多个按钮添加名字
    names.resize(8);              //定义数组大小
    names[0]="Open";              //赋初值
names[ 1]= "Close";
    names[2]="Bord T2";
    names[3]="Bord T3";
    names[4]="Bord T4";
    names[5]="Bord T5";
    names[6]="Bord T6";
    names[7]="Bord T7";
    buttons.resize(8);
    for(int i=0;i<8;i++)            //连续创建8个按钮
    {
        buttons[i] = new QPushButton(names[i],this);
        buttons[i]->move(100,10+50*i);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt,在主线程创建大量UI控件时,可能会影响界面的响应速度,因此建议使用线程来创建UI控件。下面是一个简单的示例,可以在子线程创建10000个QPushButton对象,并将它们添加到主窗口。 ``` c++ // 定义一个线程类 class WorkerThread : public QThread { public: void run() override { // 在子线程创建10000个QPushButton对象,并将它们添加到主窗口 for (int i = 0; i < 10000; i++) { QPushButton* button = new QPushButton(QString("Button %1").arg(i+1)); emit buttonCreated(button); } } signals: void buttonCreated(QPushButton* button); }; // 在主窗口连接信号和槽函数 connect(&workerThread, &WorkerThread::buttonCreated, this, &MainWindow::addButton); // 启动线程 workerThread.start(); ``` 在上述代码,我们定义了一个WorkerThread线程类,在它的run()函数创建了10000个QPushButton对象,并通过信号槽机制将它们发送给主窗口。在主窗口,我们连接了WorkerThread类的buttonCreated信号和addButton槽函数,将传递过来的QPushButton对象添加到主窗口。最后,我们启动了WorkerThread线程,从而实现了在线程创建10000个QPushButton对象的功能。 需要注意的是,由于QThread对象在创建时并不属于任何线程,因此需要在WorkerThread类重写run()函数,并在其创建QPushButton对象。此外,由于QObject类的子类不能跨线程直接发送信号,因此我们需要在WorkerThread类定义一个信号buttonCreated,将创建好的QPushButton对象通过它发送给主线程。在主线程,我们需要连接buttonCreated信号和addButton槽函数,将传递过来的QPushButton对象添加到主窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值