2014-08-27 87 views
4

我在Qt5中的一个非常简单的程序中遇到了setGeometry错误。无法在Qt中设置几何体

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

Error: setGeometry: Unable to set geometry 6x16+640+300 on QWidgetWindow/'QLabelClassWindow'. Resulting geometry: 160x16+640+300 (frame: 9, 38, 9, 9, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215).

我看到Qt adding custom widget to a layout,但我不明白的注释。
我在做什么错?

回答

2

可能因为没有使用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"; 

现在工作吗?