无法在Qt中设置几何体

Unable to set geometry in Qt

本文关键字:设置 几何体 Qt      更新时间:2023-10-16

在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";

现在工作了吗?