簡體   English   中英

無法正確調整QLabel的大小

[英]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);

另外,如果您真的希望imgDisplayerDrawingArea的直接子代,則可以重寫QWidget::resizeEvent並利用此機會設置其幾何形狀...

void DrawingArea::resizeEvent (QResizeEvent *event) override
{
  QWidget::resizeEvent(event);
  imgDisplayer->setGeometry(rect());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM