[英]Can not size QLabel correctly
我是Qt的新手。 现在,我正在尝试制作一个简单的绘图应用程序。 主要思想-我在mainwindow中还有一个小部件,其中有一个QLabel,显示了QImage(我的画布用于绘制像素)。 问题是我只是无法正确设置imgDisplayer标签的大小。 它总是看起来比我想要的要小,并且有错误的Y坐标。 起初我尝试了imgDisplayer->setGeometry(0,0, this->width(), this->height());
但是它也不能正常工作(标签很小)
MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
area = new DrawingArea(this);
area->setGeometry(0,0,this->width(),this->height()/2);
area->show();
button = new QPushButton("Draw", this);
int bwidth = 100, bheight = 50;
button->setGeometry(200, 300, bwidth, bheight);
connect(button, SIGNAL(clicked(bool)), this, SLOT(getPoint()));
}
DrawingArea.cpp
DrawingArea::DrawingArea(QWidget *parent) : QWidget(parent)
{
setBackgroundRole(QPalette::Base);
setAutoFillBackground(true);
canvas = new QImage(300, 300, QImage::Format_RGB32);
QRgb val = qRgb(189,149,39);
canvas->fill(Qt::gray);
canvas->setPixel(4,4,val);
canvas->setPixel(5,4,val);
imgDisplayer = new QLabel(this);
imgDisplayer->setGeometry(0, 0, parent->width(), parent->height());
imgDisplayer->setPixmap(QPixmap::fromImage(*canvas));
imgDisplayer->show();
displayer = new QLabel(this);
}
最简单的解决方案是使用布局来管理子窗口小部件。
/*
* Create the QLabel and set its pixmap.
*/
imgDisplayer = new QLabel;
imgDisplayer->setPixmap(QPixmap::fromImage(*canvas));
/*
* Create the layout and add imgDisplayer to it.
*/
auto *layout = new QHBoxLayout(this);
layout->addWidget(imgDisplayer);
另外,如果您真的希望imgDisplayer
是DrawingArea
的直接子代,则可以重写QWidget::resizeEvent
并利用此机会设置其几何形状...
void DrawingArea::resizeEvent (QResizeEvent *event) override
{
QWidget::resizeEvent(event);
imgDisplayer->setGeometry(rect());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.