在主窗口中显示QImage

时间:2012-07-31 11:14:21

标签: c++ qt user-interface qpixmap qlabel

我正在尝试使用Qt显示图像,我可以将其显示在单独的窗口中,但我无法将其显示在主窗口中

Qt_first w;
w.show();

这显示了我在Qt设计器中设计的窗口,如何访问我放在该窗口的QWidget(centralWidget)中的Qlabel(Image_Lbel)?

我生成了一个正确显示的条纹图像,只是不在正确的窗口中

QSize size = QSize(640,480);
QImage::Format format = QImage::Format_ARGB32;
QImage image = QImage::QImage(size, format);
//generate
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(image));
myLabel.show();

我感觉可能是我没有包含来自创建者或命名空间的文件任何建议非常感谢

3 个答案:

答案 0 :(得分:2)

我猜你的Label会独立显示。将label的父级设置为主窗口。然后您的Label将显示在主窗口内。

所以使用,

QLabel *myLabel = new QLabel(this); // sets parent of label to main window 
myLabel->setPixmap(QPixmap::fromImage(image));
myLabel->show();

您还可以使用move功能在主窗口中移动标签。

答案 1 :(得分:1)

如果要从Qt_first类外部设置标签,则需要添加方法来执行此操作。例如(在qt_first.cpp中,相应地更改qt_first.h):

void Qt_first::setImageLabel(const QImage& image)
{
    ui->Image_Lble.setPixmap(QPixmap::fromImage(image));
}
此示例中的

ui是表示使用Qt Designer创建的UI的对象。

答案 2 :(得分:0)

我使用了两个答案的组合,这要归功于

Qt_first w;  // the UI I made with Qt creator
QLabel *myLabel = w.getImageLabel();
myLabel->setPixmap(QPixmap::fromImage(image));
w.show();

在Qt_first类中包含以下内容

QLabel* Qt_first::getImageLabel(){  
    QLabel *myLabel = ui.Image_Label;
    return myLabel;
}