在Qt5中的一个非常简单的程序中,setGeometry
出现错误。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel* m_photo = new QLabel;
m_photo->setPixmap(QPixmap("test.jpg"));
m_photo->show();
return a.exec();
}
错误:setGeometry:无法在上设置几何体6x16+640+300Q桥接窗口/"Q标签类窗口"。生成的几何图形:160x16+640+300(帧:9、38、9、9,自定义边距:0、0、0,最小大小:0x0,最大尺寸:16777215x166777215)。
我看到Qt在布局中添加了自定义小部件,但我不理解这个评论
我做错了什么?
可能因为没有使用setGeometry()
而出现此错误,您应该自己设置几何体。试试这个:
m_photo->setGeometry(200,200,200,200);
更好的方法是:标签应该和图片大小相同。为此,可以使用QPixmap
方法width()
和height
QLabel* m_photo = new QLabel;
QPixmap px("G:/2/qt.jpg");
m_photo->setPixmap(px);
m_photo->setGeometry(200,200,px.width(),px.height());
m_photo->show();
编辑。
我理解你为什么会犯这个错误。这很简单,你的图片不加载!为什么?也很简单:可能你的图片(test.jpg
)放在exe文件附近,但Qt没有看到这个文件(因为Qt使用另一个构建目录)
解决方案:将test.jpg
放在正确的目录中或设置pixmap完整路径(例如,我做"G:/2/test.jpg"
)。也使用这个代码:检查你的图片加载是否成功。
QLabel* m_photo = new QLabel;
QPixmap px("G:/2/qt.jpg");
if(!px.isNull())
{
m_photo->setPixmap(px);
m_photo->show();
}
else
qDebug() << "Cannot find picture";
现在工作了吗?