c++ - QT C++ 滚动问题
问题描述
我在将小部件的内容锁定到滚动区域时遇到问题。我认为最好的描述方式是在所附的图片中。图片“a”是没有滚动区域的正常操作 图片“b”是当我尝试向小部件添加滚动区域时。滚动区域出现,但文本不包含在其中。
滚动区域是它自己的独立实体,内容远离它。
这是我放在小部件中的代码:
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
scrollArea->setVisible(true);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setWidget(this);
scrollArea->setGeometry(680, 250, 560, 440);
scrollArea->setBackgroundRole(QPalette::Light);
有任何想法吗?
图一:
图片 b:
这是从主 GUI 对自定义子小部件的调用:
subalerPane = new subalertsPane(mstrWnd);
subalerPane->setObjectName(subalertspane_params._name);
subalerPane->setGeometry(QRect(subalertspane_params._x, subalertspane_params._y, subalertspane_params._w, subalertspane_params._h));
subalerPane->setPixmaps(QPixmap(subalertspane_params._normalImageDm), QPixmap(subalertspane_params._normalImageNm), QPixmap(subalertspane_params._minimisedImageDm), QPixmap(subalertspane_params._minimisedImageNm));
subalerPane->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
subalerPane->setAttribute(Qt::WA_TranslucentBackground);
subalerPane->setState(subalertspane_params._defaultState);
subalerPane->setUIMode(subalertspane_params._defaultUIMode);
subalerPane->setVisible(true);
subalerPane->raise();
这是 subalertsPane cpp 文件:
subalertsPane::subalertsPane(QWidget *parent) :QLabel(parent)
{
subalertsPane::state=bsNormal;
subalertsPane::pressable=true;
subalertsPane::uiMode=bdnDay;
connect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));
connect(this, SIGNAL(released()), this, SLOT(slotReleased()));
statbutts[0] = new statusButton(this);
statbutts[1] = new statusButton(this);
statbutts[2] = new statusButton(this);
statbutts[3] = new statusButton(this);
statbutts[4] = new statusButton(this);
statbutts[5] = new statusButton(this);
statbutts[6] = new statusButton(this);
statbutts[7] = new statusButton(this);
statbutts[8] = new statusButton(this);
statbutts[9] = new statusButton(this);
statbutts[10] = new statusButton(this);
for (int i = 0; i < 11; i++)
{
statbutts[i]->fadeIn();
statbutts[i]->setVisible(false);
}
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
scrollArea->setVisible(true);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setWidget(this);
scrollArea->setGeometry(680, 250, 560, 440);
scrollArea->setBackgroundRole(QPalette::Light);
}
解决方案
QScrollArea::setWidget()
用于在滚动区域内设置带有内容的小部件。示例:如果您想要一个 QLabel 在滚动区域内带有文本 - scrollArea->setWidget(qLabel); 然后将滚动区域添加到视图的布局中
auto *scrollArea = new QScrollArea(this);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setWidgetResizable(true);
auto *buttonsWidget = new QGroupBox(scrollArea);
scrollArea->setWidget(buttonsWidget);
auto *comboboxesLayout = new QVBoxLayout();
buttonsWidget->setLayout(comboboxesLayout);
mainLayout->addWidget(scrollArea);
推荐阅读
- xamarin.android - Xamarin Android 无法覆盖 OnBackButtonPressed 方法
- kubernetes - 入口和证书管理器未创建证书
- python - Python中对numpy数组的操作
- firebase - 了解添加单个文档后将快照附加到集合的读取次数
- ios - Kotlin 多平台库:无法为 iOS 生成 .framework
- ruby-on-rails - 弹性搜索中未初始化的常量 Faraday::Error::ConnectionFailed
- python - 如何使用中间层的输出定义损失函数?
- javascript - 使用 instanceof 确定内部错误类型时如何修复“本地捕获的抛出异常”
- css - 向左和向上和向下均匀地展开 div
- http - JMeter 的树中的视图侦听器中缺少 BROWSER 选项