Qt問題:窗口設計問題一

Qt5.5版本使用

setGeometryDp: Unable to set geometry 10x10+10+10 on QWidgetWindow/'QLabelClassWindow'. Resulting geometry:  180x10+10+10 (frame: 11, 45, 11, 11, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 10x10).

情景描述

建立一個最簡單的窗口:
上面添加一個QPushButton。
void MainWindow::on_pushButton_clicked()
{
    QLabel *lb = new QLabel();
    lb->setText("YOU");
    lb->show();
}
//點擊QPushButton,會報出這樣的警告。

導致警告的原因:

由於QLabel沒有用本窗口作爲父窗口,所以其幾何位置是隨意變換的,所以構造時出現了問題:
由於他的父對象幾何框架較小不能容納下子類視圖,所以導致了對父對象的重新構造。

解決問題的方法

1、通過以下的構造方式
void MainWindow::on_pushButton_clicked()
{
	//利用父類視圖構造子類視圖
    QLabel *lb = new QLabel(this);
    lb->setText("YOU");
    lb->show();
}
2、通過設置固定的位置和窗口大小
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //this->setGeometry(QRect(0,0,1024,768));
}
void MainWindow::on_toolButton_clicked()
{

    QLabel *lb = new QLabel();
    //在這裏,將此窗口設置爲固定的
    lb->setGeometry(QRect(10,10,10,10));
    lb->setMaximumHeight(10);
    lb->setMaximumWidth(10);
    lb->setMinimumHeight(10);
    lb->setMinimumWidth(10);
    lb->setText("Hello");
    lb->show();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章