使用 QScrollArea 时发生错误

Posted

技术标签:

【中文标题】使用 QScrollArea 时发生错误【英文标题】:Error occurs when use a QScrollArea 【发布时间】:2013-06-02 08:59:47 【问题描述】:
#include <QtCore>
#include <QtGui>
#include <QLabel>
#include <QScrollArea>
#include <QScrollBar>
#include <QFileDialog>
#include"QDebug"
#include<math.h>
#include<QApplication>
QScrollArea* scrollarea = new QScrollArea;

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

ui->setupUi(this);
ui->label->setBackgroundRole(QPalette::Base);
ui->label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
ui->label->setScaledContents(true);

scrollarea->setBackgroundRole(QPalette::Dark);
scrollarea->setWidget(ui->label);
setCentralWidget(scrollarea);
QImage img("D:\\picture.jpg");
ui->label->setPixmap(QPixmap::fromImage(img));


MainWindow::~MainWindow()

delete ui;

我是 Qtcreator 的新手。 我尝试将滚动条添加到标签。但是当我运行时,它会发生错误: QWidget:必须在 QPaintDevice 之前构造一个 QApplication 我该怎么做才能解决这个问题

【问题讨论】:

向我们展示您的main() #include "mainwindow.h" #include int main(int argc, char *argv[]) QApplication a(argc, argv);主窗口 w; w.show();返回 a.exec(); 这是我的 main() 【参考方案1】:
QScrollArea* scrollarea = new QScrollArea;

在创建QApplication 之前,您正在构建一个全局QScrollArea。使其成为MainWindow的成员变量。

【讨论】:

那么请接受(这是我的答案旁边的勾号),否则搜索与您相同问题的人会看到您的问题但认为它尚未解决。

以上是关于使用 QScrollArea 时发生错误的主要内容,如果未能解决你的问题,请参考以下文章

为 QScrollArea 保留空间

QScrollArea 中的自定义小部件仅在滚动时严重重绘

qmidarea不能关闭子窗口

7.3 QScrollArea滚动视图

通过 textinput 添加新项目时,阻止 QScrollArea 项目跳来跳去

即使在滚动时如何也不移动 QScrollArea 中的内容