- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个在嵌入式系统(带有 4d 4.3'' 触摸屏的 BeagleBone Black)上全屏运行的 Qt 应用程序。我想显示不同数量的固定宽度自定义小部件(例如,假设这些是简单的 slider )。所以我的想法是有一个 QScrollArea,我使用 Qt Designer 添加到我的表单中,它占用了我屏幕上的空间。然后,把我想要的QSlider的数量放在一个QHBoxLayout中。最后,在滚动区域显示 QHBoxLayout。这样,如果要求的 QSlider 数量太大而无法显示在屏幕上,我希望出现一个水平滚动条。我还希望 QSlider 具有恒定宽度(我的自定义小部件具有固定宽度)。所以这是我写的代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// ui->scrollArea is a QScrollArea generated by Qt Designer
ui->setupUi(this);
QHBoxLayout * layout = new QHBoxLayout(ui->scrollArea);
layout->setSpacing(1);
QSlider * slider1 = new QSlider(layout->widget());
QSlider * slider2 = new QSlider(layout->widget());
QSlider * slider3 = new QSlider(layout->widget());
QSlider * slider4 = new QSlider(layout->widget());
slider1->setFixedSize(200, 200);
slider2->setFixedSize(200, 200);
slider3->setFixedSize(200, 200);
slider4->setFixedSize(200, 200);
layout->addWidget(slider1);
layout->addWidget(slider2);
layout->addWidget(slider3);
layout->addWidget(slider4);
ui->scrollArea->setLayout(layout);
}
结果给出了一个没有任何滚动条和重叠 slider 的方框。
我尝试添加:
slider1->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider2->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider3->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider4->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
但结果相同。
那么在固定大小的滚动区域中显示固定大小的内容的正确方法是什么?
最佳答案
好的,我在写问题的时候找到了答案,所以其他人似乎也有同样的问题,我把解决方案和一个完整的例子贴出来。
解决方案是在 QScrollArea 之前通过另一个 QWidget,因此它给出以下结构(括号中有父项)[并键入方括号]
ui->scrollArea [QScrollArea]
|\
| widget (ui->scrollArea) [QWidget]
| |\
| | layout (widget) [QHBoxLayout]
| | |\
| | | slider1 (layout->widget()) [QSlider]
| | | slider2 (layout->widget()) [QSlider]
| | | slider3 (layout->widget()) [QSlider]
| | | slider4 (layout->widget()) [QSlider]
由以下代码实现:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QWidget * widget = new QWidget(ui->scrollArea);
QHBoxLayout * layout = new QHBoxLayout(widget);
layout->setSpacing(1);
QSlider * slider1 = new QSlider(layout->widget());
QSlider * slider2 = new QSlider(layout->widget());
QSlider * slider3 = new QSlider(layout->widget());
QSlider * slider4 = new QSlider(layout->widget());
slider1->setFixedSize(200, 200);
slider2->setFixedSize(200, 200);
slider3->setFixedSize(200, 200);
slider4->setFixedSize(200, 200);
slider1->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider2->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider3->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider4->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
layout->addWidget(slider1);
layout->addWidget(slider2);
layout->addWidget(slider3);
layout->addWidget(slider4);
widget->setLayout(layout);
ui->scrollArea->setWidget(widget);
}
关于c++ - QScrollArea 中 QBoxLayout 中固定大小的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041295/
我正在查看示例 here ,并且想知道是否没有内存泄漏。我红了谈论主题的文章mem leak on delete .然而,虽然 QWidgets 确实保留了添加到的小部件的所有权,但布局却没有。 从
以下简化代码片段: #include int main(int argc, char **argv) { QApplication app(argc, argv); QWidget *window
每当显示的 QBoxLayout 被填充时,屏幕上就会出现一些闪烁,因为小部件被添加到布局中。如何停止这种闪烁? setUpdatesEnabled 没有成功。 最佳答案 show() 仅在您完成填充
因此,我降低了几个等级,尝试使用简单的程序来掌握 Qt 工具的窍门。 首先,我在 main() 函数中尝试了一个简单的标签,然后在其中尝试了一个按钮。一切顺利。 接下来,我尝试了相同的操作,但在主窗口
有人知道如何在 QBoyLayout 中的两个小部件之间创建可拉伸(stretch)的分隔符吗? ? 这样用户就可以轻松更改列/行的拉伸(stretch)因子。 你可以在图片中看到类似的东西: 谢谢。
问题说明了一切。说我有一个布局 mylayout |-- widgetA `-- widgetB 如何在这棵树上插入一个新的小部件? mylayout |-- widgetA |-- widgetC
由于其高度可定制性,我在构建应用程序 GUI 时一直依赖使用多个 GroupBox。但 QGroupBox 似乎对界面构建速度产生了一定的影响。现在,使用布局的 .insertLayout() 方法,
我是 QT 新手,正在尝试使用 Apps。我刚刚用一些按钮编写了一个非常简单的应用程序。主要想法是在我的应用程序中有一个小的“ Logo ”。稍后我还想添加一些背景图片。 我从一个带有网格布局的示例应
我正在开发一个在嵌入式系统(带有 4d 4.3'' 触摸屏的 BeagleBone Black)上全屏运行的 Qt 应用程序。我想显示不同数量的固定宽度自定义小部件(例如,假设这些是简单的 slide
我正在做一个关于盒子布局的 PyQt4 教程。但我不明白 addStretch 是如何工作的。 如果我使用 vbox.addStretch(1) 和 hbox.addStretch(1),这两个按钮会
如何在 PyQT5 中拉伸(stretch) QHboxLayout 和 QVBoxLayout?我应该使用哪种方法?结果图片在链接中给出(当窗口很小时,它也不适合窗口的形状) from PyQt5.
我想在 QBoxLayout 中有一个 QTextEdit 和 QPushButton,其中按钮的大小根据需要尽可能小,其余的都是 textedit . 到目前为止,我想到了这个。 QPushButt
我想问一下当我将 QHBoxLayout 与 QMainWindow 和 QWidget 一起使用时发生的事情。我正在尝试通过连接 2 个小部件来更改窗口标题样式。这是发生了什么:QWidget下 这
我有一个 ScrollArea,其中包含一个包含多个标签的 VBoxLayout: realmScroll = QScrollArea(self.container.widget()) realmSc
我想创建一个可滚动的小部件,其中包含由 QBoxLayout 管理的子小部件集合,并且必须能够轻松地从该集合中添加和删除小部件。但是当我向它添加子窗口小部件时,视口(viewport)窗口小部件并没有
我是一名优秀的程序员,十分优秀!