c++ - 即时生成复选框

标签 c++ qt

我有一个动态创建的图像扩展列表,我想为其显示复选框。 我有一个包含 .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 个复选框,但它们都在彼此之上。 我怎样才能将它们隔开,而且,我怎样才能即时处理从选中状态到未选中状态的变化?

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

谢谢。

最佳答案

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

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

关于c++ - 即时生成复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068897/

相关文章:

c++ - 成员变量作为指向模板类型的指针 C++

Qt - 交叉编译

c++ - 为什么这个函数会把RAX压栈作为第一个操作呢?

c++ - 检测屏幕上的坐标是否可交互。

c++ - 在 64 位编译器和操作系统中使用 64 位整数

qt - 带有 Qt 5.5 的 OpenCV 3.0 : Toolbar icons and control panel not shown

c++ - 确定 QImage 的哪些像素在使用 QPainter 绘画时发生了变化

c++ - 使用内联 ASM 获取字符串

c++ - 在 Qt 中从 QByteArray 加载 QPixmap?

c++ - 委托(delegate) : no repaint upon mouseover, 中的 QWidget 因此无法检查 MouseOver 状态