动态创建循环对象

时间:2016-04-06 12:45:22

标签: c++ qt c++11

我想在循环中在Qt中创建许多按钮。

在头文件中:

QVector<QPushButton> *btns;

在cpp文件中:

btns = new QVector<QPushButton>();
for(int i = 0; i <= 10; i++) {
    btns->append(new QPushButton(QString::number(i),this));
}

我收到错误:

  

无法从&#39; QPushButton *&#39;转换参数1到了#const QPushButton   &安培;&#39;

它可能并不难解决,但我对指针不太好。你能救我吗?

2 个答案:

答案 0 :(得分:4)

标题

中的

 <td colspan="12">

   {$product_tab}

 </td>

中的

QVector<QPushButton*>  btns;

答案 1 :(得分:4)

您尝试按值存储按钮。这在Qt容器中是不可能的,因为它们需要可复制的值,并且不能从gcc test.c -lpcap 派生的Qt类是可复制的。 QObject无法复制,也无法按值存储在Qt容器中。

您需要做的是:

  1. 按指针存储小部件:

    QPushButton
  2. 或者,按值将小部件存储在不需要复制它们的容器中:

    class MyClass : ... {
      QList<QPushButton *> m_buttons; // performs the same as QVector, has <<
      ...
    };
    
    for(int i = 0; i <= 10; i++) {
        m_buttons << new QPushButton(QString::number(i),this));
        // you'll be likely adding the buttons to a layout:
        layout().addWidget(m_buttons.back());
    }