2

我正在尝试使用 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();

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

4

3 回答 3

4

我猜你Label正在独立显示。将标签的父级设置为主窗口。然后您的Label遗嘱将显示在您的主窗口中。

所以使用,

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

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

于 2012-07-31T11:30:45.403 回答
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 的对象。

于 2012-07-31T11:31:24.993 回答
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;
}
于 2012-07-31T13:29:10.990 回答