gpt4 book ai didi

c++ - Qt:QScrollArea 中的自定义小部件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:03 46 4
gpt4 key购买 nike

我正在尝试创建自定义小部件。我的小部件呈现自身,除非它在滚动区域内。下面的代码有效。如果我在 MainWindow 构造函数中将 if(0) 更改为 if(1),它将不会呈现“Hello World”字符串。我假设我必须(重新)实现一些额外的方法,但到目前为止我还无法通过反复试验找到正确的方法。

// hellowidget.h
#ifndef HELLOWIDGET_H
#define HELLOWIDGET_H

#include <QtGui>

class HelloWidget : public QWidget
{
Q_OBJECT
public:
HelloWidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *event);
};

#endif // HELLOWIDGET_H

// hellowidget.cpp
#include "hellowidget.h"
HelloWidget::HelloWidget(QWidget *parent)
: QWidget(parent)
{
}
void HelloWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawText(rect(), Qt::AlignCenter, "Hello World");
}

// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui>

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

private:
};

#endif // MAINWINDOW_H

// mainwindow.cpp
#include "mainwindow.h"
#include "hellowidget.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
HelloWidget *hello = new HelloWidget;
QWidget *central = hello;

if( 0 )
{
QScrollArea *scroll = new QScrollArea ;
scroll->setWidget(hello);
central = scroll;
}

setCentralWidget( central );
}

MainWindow::~MainWindow()
{
}

// main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

最佳答案

您只需为您的 HelloWidget 指定大小和位置。

将这一行添加到您的代码中。

hello->setGeometry(QRect(110, 80, 120, 80)); 



或者如果你想用你的小部件填充滚动区域:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QScrollArea *const scroll(new QScrollArea);
QHBoxLayout *const layout(new QHBoxLayout(scroll));
HelloWidget *const hello(new HelloWidget);
hello->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
layout->addWidget(hello);
setCentralWidget( scroll );
}

关于c++ - Qt:QScrollArea 中的自定义小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/999303/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com