- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现以下架构:
我正在寻找的结果是有一个组框,里面有一个滚动区域,里面有我所有的小部件。但是当我尝试实现它时,滚动区域中没有任何内容。
这是我拥有的:http://imgur.com/SgQkJ
编辑:这就是我删除滚动区域并直接将我的小部件放入 gorupbox 时所拥有的 http://imgur.com/iuTnV
这是我的代码:
测量.h
#ifndef MESURE_H
#define MESURE_H
#include <QWidget>
#include <QHBoxLayout>
#include <QToolButton>
#include <QLabel>
#include <QCheckBox>
#include <QString>
class Mesure : public QWidget
{
public:
Mesure(QString angle, QWidget *parent);
private:
QHBoxLayout *m_hlayoutMesure;
QToolButton *m_buttonClose;
QLabel *m_labelAngle;
QCheckBox *m_checkboxMesure;
};
#endif
测量.cpp
#include "Mesure.h"
Mesure::Mesure(QString angle, QWidget *parent) :
QWidget(parent),
m_hlayoutMesure(new QHBoxLayout(this)),
m_buttonClose(new QToolButton(this)),
m_labelAngle(new QLabel(angle, this)),
m_checkboxMesure(new QCheckBox(this))
{
m_buttonClose->setText("X");
m_labelAngle->setAlignment(Qt::AlignCenter);
m_hlayoutMesure->addStretch(1);
m_hlayoutMesure->addWidget(m_checkboxMesure);
m_hlayoutMesure->addWidget(m_labelAngle);
m_hlayoutMesure->addWidget(m_buttonClose);
m_hlayoutMesure->addStretch(1);
m_hlayoutMesure->setSpacing(10);
m_hlayoutMesure->setMargin(0);
QObject::connect(m_buttonClose, SIGNAL(clicked()), this, SLOT(close()));
}
PanneauMesure.h
#ifndef PANNEAUMESURE_H
#define PANNEAUMESURE_H
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QToolButton>
#include <QLabel>
#include <QCheckBox>
#include <QString>
#include <QPushButton>
#include <QSlider>
#include <QSpacerItem>
#include <QGroupBox>
#include <QScrollArea>
#include <vector>
#include "Mesure.h"
class PanneauMesure : public QWidget
{
Q_OBJECT
public:
PanneauMesure();
void add(Mesure *mesure);
public slots:
void remiseAZero();
private:
QVBoxLayout *m_vlayoutTotal;
QGroupBox *m_groupboxMesures;
QVBoxLayout *m_vlayoutGroupBoxMesures;
QScrollArea *m_scrollareaMesures;
QWidget *m_widgetMesures;
QVBoxLayout *m_vlayoutMesures;
QGroupBox *m_groupboxOptions;
QVBoxLayout *m_vlayoutOptions;
QCheckBox *m_checkboxAfficherMesures;
QPushButton *m_buttonRAZ;
QWidget *m_widgetAlpha;
QHBoxLayout *m_hlayoutAlpha;
QLabel *m_labelAlphaText;
QLabel *m_labelAlphaValeur;
QSlider *m_sliderAlpha;
};
#endif
PanneauMesure.cpp
#include "PanneauMesure.h"
PanneauMesure::PanneauMesure() :
QWidget(),
m_vlayoutTotal(new QVBoxLayout(this)),
m_groupboxMesures(new QGroupBox("Mesures", this)),
m_vlayoutGroupBoxMesures(new QVBoxLayout(m_groupboxMesures)),
m_scrollareaMesures(new QScrollArea(m_groupboxMesures)),
m_widgetMesures(new QWidget(m_groupboxMesures)),
m_vlayoutMesures(new QVBoxLayout(m_widgetMesures)),
m_groupboxOptions(new QGroupBox("Options", this)),
m_vlayoutOptions(new QVBoxLayout(m_groupboxOptions)),
m_checkboxAfficherMesures(new QCheckBox("Afficher les mesures", m_groupboxOptions)),
m_buttonRAZ(new QPushButton("Remise à zéro", m_groupboxOptions)),
m_widgetAlpha(new QWidget(m_groupboxOptions)),
m_hlayoutAlpha(new QHBoxLayout(m_widgetAlpha)),
m_labelAlphaText(new QLabel("Alpha :", m_groupboxOptions)),
m_labelAlphaValeur(new QLabel("50", m_groupboxOptions)),
m_sliderAlpha(new QSlider(m_groupboxOptions))
{
// Alpha
m_sliderAlpha->setMaximum(100);
m_sliderAlpha->setValue(50);
m_hlayoutAlpha->addWidget(m_labelAlphaText);
m_hlayoutAlpha->addWidget(m_labelAlphaValeur);
m_labelAlphaText->setAlignment(Qt::AlignRight);
m_labelAlphaValeur->setAlignment(Qt::AlignLeft);
m_sliderAlpha->setOrientation(Qt::Horizontal);
QObject::connect(m_sliderAlpha, SIGNAL(valueChanged(int)), m_labelAlphaValeur, SLOT(setNum(int)));
// Afficher Mesures
m_checkboxAfficherMesures->setChecked(true);
// Options
m_vlayoutOptions->addWidget(m_buttonRAZ);
m_vlayoutOptions->addWidget(m_checkboxAfficherMesures);
m_vlayoutOptions->addWidget(m_widgetAlpha);
m_vlayoutOptions->addWidget(m_sliderAlpha);
// Mesures
m_scrollareaMesures->setWidget(m_widgetMesures);
m_vlayoutGroupBoxMesures->addWidget(m_scrollareaMesures);
// Total
m_vlayoutTotal->addWidget(m_groupboxOptions);
m_vlayoutTotal->addWidget(m_groupboxMesures);
setLayout(m_vlayoutTotal);
}
void PanneauMesure::add(Mesure *mesure)
{
m_vlayoutMesures->addWidget(mesure);
QObject::connect(m_buttonRAZ, SIGNAL(clicked()), mesure, SLOT(close()));
QObject::connect(m_buttonRAZ, SIGNAL(clicked()), this, SLOT(remiseAZero()));
}
void PanneauMesure::remiseAZero()
{
m_sliderAlpha->setValue(50);
m_checkboxAfficherMesures->setChecked(true);
}
main.cpp
#include <QApplication>
#include "PanneauMesure.h"
#include "Mesure.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
PanneauMesure panneau;
Mesure mesure1("14°", &panneau);
Mesure mesure2("12°", &panneau);
Mesure mesure3("9°", &panneau);
Mesure mesure4("8°", &panneau);
Mesure mesure5("7°", &panneau);
Mesure mesure6("5°", &panneau);
Mesure mesure7("2°", &panneau);
Mesure mesure8("1°", &panneau);
panneau.add(&mesure1);
panneau.add(&mesure2);
panneau.add(&mesure3);
panneau.add(&mesure4);
panneau.add(&mesure5);
panneau.add(&mesure6);
panneau.add(&mesure7);
panneau.add(&mesure8);
panneau.show();
return app.exec();
}
最佳答案
默认情况下,QScrollArea
View (内部滚动部分)不会在其内容更改时调整其大小,您可以通过以下任一方式更改它:
m_vlayoutMesures->setSizeConstraint(QLayout::SetMinAndMaxSize);
或
m_scrollareaMesures->setWidgetResizable(true);
后者还将调整 QScrollArea
的外部大小,以尽可能避免滚动条。
关于c++ - QGroupBox 中的 QScrollArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10917727/
在获得有关 the previous one 的帮助后,我遇到了 QScrollArea 的另一个问题, 这有点相似。 现在的问题是,如果您创建一个滚动区域和一个标签,将标签设置为滚动区域的小部件,然
我有一个QScrollArea。我想让上下文可以用鼠标平移 - 这样,手形光标会显示在该区域上方,然后单击并按住让我们进入拖动模式。 这类似于 QGraphicsView 使用 QGraphicsVi
我正在使用诺基亚 Qt SDK 并在顶部区域设计了一个小横幅轮播。它看起来像这样: 层次结构如下所示: 在模拟器中安装它后,我尝试使其可滚动( throw )。我猜这是一个简单的任务(如 Androi
我有一个带有 QScrollArea 的小部件,我希望它在包含它的小部件显示后立即向下滚动。我尝试过: scrollArea->ensureVisible(0,100, 20, 20); 它仅在用户调
我遇到了 QScrollArea 的问题。 特别是我找不到正确的 QSS 规则来删除 QSrollArea QFrame 和 QScroll 之间的 3px 空间。 我要删除的空间是图中红色箭头所指的
我正在寻找一种方法来解决放大时某些小部件消失的问题。 我的程序的结构是: Window 与 QscrollArea 作为 child 。 QscrollArea 有一个从 QWidget 作为子项继承
我昨晚花了很多时间试图让这个 QScrollArea 工作,但没有运气。我想做的是在菜单下方添加顶部水平菜单布局和可滚动垂直内容布局。滚动条不可见,一旦我向其中添加新元素(通过单击菜单按钮之一),内容
我试图在 QT 中获取自定义滚动小部件,但在滚动时出现重绘错误。 Alt-tab 或其他重绘事件正确重绘。 我以 http://doc.qt.io/qt-5/qtwidgets-widgets-cha
我有一个很好的小部件,基本上看起来像一个带有一堆 QSlider 的对话框。 slider 的数量取决于调用对话框(不是实际的 QDialog;只是 QWidget)时的情况。 由于不同数量的 sli
我正在尝试使用 QScrollArea 以便能够将大量小部件放在同一个窗口中。不幸的是,包含 QScrollAea(居中)的 QWidget 没有缩放到窗口的大小,这使得它......不像我想要的..
我目前有一个 QScrollArea 定义为: self.results_grid_scrollarea = QScrollArea() self.results_grid_widget = QWid
我有一个QScrollArea,我将向其中添加一些其他小部件。我想要的是,当其中的小部件扩展其大小时,QScrollArea 开始滚动。 但是滚动区域开始自行扩展。 这是我使用的代码: import
我正在尝试在框布局中显示带有滚动条的图像标签。但是,滚动区域出现在错误的位置且大小错误。你能告诉我我做错了什么吗? import sys from PyQt5 import QtCore from P
我认为这是同一个问题:QScrollArea resizing QWidget 但是没有解决办法。所以让我揭露这个问题。 测试2继承自QWidget: 作曲: QSpinBox 的 vector QS
QScrollArea 有办法知道它滚动了多少吗?我是否需要对所有 scollContensBy() 调用进行统计? 我需要获取鼠标相对于 QScrollArea 内图像标签的位置。我只能获取相对于当
我在 QScrollArea 中放置自定义小部件时遇到了一些问题。我的自定义小部件在 QGridLayout 中包含 4 个标签来填充它。现在我想将此小部件保留在 QScrollArea 中并能够向其
在 PyQtGraph 中,您可以使用滚轮放大绘图。但是,当将 PyQtGraph 嵌入到 QScrollArea 中时,滚动会放大悬停的绘图并滚动 QScrollArea。 最少的可重现代码: fr
我正在研究配置 QDialog。它有几个类别(General、Appearance 等),当用户点击它们时会加载它们。每个类别都有自己的页面。这些页面本身就是独立的类(每个都有自己的 ui、cpp 和
就像 QPushButton提供默认 clicked()信号,我预计 QScrollArea有一个sliderChanged()或类似的信号。有趣的是,QScrollBar确实有这样的信号。 我想做的
我正在尝试使用 QVBoxLayout 中的多个 Groupbox 对象创建一个动态 GUI。由于它们很多,我将需要一个滚动区域来使最终用户可以使用它们。 所以我尝试将这个选项卡的顶部小部件从 QWi
我是一名优秀的程序员,十分优秀!