【问题标题】:Generate checkbox on the fly即时生成复选框
【发布时间】:2013-08-05 22:31:41
【问题描述】:

我有一个动态创建的图像扩展列表,我想为其显示复选框。 我有一个包含 .png、.jpg、.bmp 的 QStringList。用户可以更改此列表,因此我需要在 UI 上为每种可能性生成一个复选框。

QStringList filters;
filters << "*.jpg" << "*.png" << "*.jpeg";

我正在考虑使用 foreach 或 for 循环来实现这一点。

foreach(QString filt, filters){
    QCheckBox *checkbox = new QCheckBox(filt, this);
}

这会在 UI 上放置 3 个复选框,但它们都在彼此之上。 如何将它们隔开,以及如何处理从检查到未选中的状态变化?

当它从字符串列表生成复选框时,完全不知道如何做到这一点。

谢谢。

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    复选框相互堆叠,因为您没有将它们添加到小部件的布局中。这是一个将每个复选框放入垂直布局的示例。

    QWidget *w = new QWidget;
    QVBoxLayout *vbox = new QVBoxLayout;
    
    foreach(QString filt, filters){
        QCheckBox *checkbox = new QCheckBox(filt, this);
        checkbox->setChecked(true);
        vbox->addWidget(checkbox);
    }
    
    w->setLayout(vbox);
    w->show()
    

    http://qt-project.org/doc/qt-5.0/qtwidgets/qvboxlayout.html阅读QVBoxLayout

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多