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();
}