【发布时间】:2011-05-27 07:44:06
【问题描述】:
我是 Qt 新手,我正在尝试创建一个简单的 GUI 应用程序,一旦单击按钮就会显示图像。
我可以读取QImage 对象中的图像,但是有没有简单的方法来调用将QImage 作为输入并显示它的Qt 函数?
【问题讨论】:
我是 Qt 新手,我正在尝试创建一个简单的 GUI 应用程序,一旦单击按钮就会显示图像。
我可以读取QImage 对象中的图像,但是有没有简单的方法来调用将QImage 作为输入并显示它的Qt 函数?
【问题讨论】:
据我所知,QPixmap 用于显示图像,QImage 用于读取图像。有QPixmap::convertFromImage() 和QPixmap::fromImage() 函数可以从QImage 转换。
【讨论】:
一种常见的方法是使用QLabel::setPixmap() 将图像添加到QLabel 小部件,然后像显示任何其他小部件一样显示QLabel。示例:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPixmap pm("your-image.jpg");
QLabel lbl;
lbl.setPixmap(pm);
lbl.show();
return app.exec();
}
【讨论】:
显示如何显示 QImage 的简单但完整的示例可能如下所示:
#include <QtGui/QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QImage myImage;
myImage.load("test.png");
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(myImage));
myLabel.show();
return a.exec();
}
【讨论】:
谢谢大家,我找到了方法,和 Dave 和 Sergey 一样:
我正在使用 QT Creator:
在主 GUI 窗口中使用拖放 GUI 创建并创建标签(例如“myLabel”)
在按钮(单击)的回调中,使用指向用户界面窗口的 (*ui) 指针执行以下操作:
void MainWindow::on_pushButton_clicked()
{
QImage imageObject;
imageObject.load(imagePath);
ui->myLabel->setPixmap(QPixmap::fromImage(imageObject));
//OR use the other way by setting the Pixmap directly
QPixmap pixmapObject(imagePath");
ui->myLabel2->setPixmap(pixmapObject);
}
【讨论】:
使用QLabel 绘制图像对我来说似乎有点笨拙。对于较新版本的 Qt,您可以使用 QGraphicsView 小部件。在 Qt Creator 中,将 Graphics View 小部件拖到您的 UI 上并为其命名(在下面的代码中命名为 mainImage)。在mainwindow.h 中,将类似于private 的变量添加到MainWindow 类中:
QGraphicsScene *scene;
QPixmap image;
然后只需编辑mainwindow.cpp 并使构造函数如下所示:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
image.load("myimage.png");
scene = new QGraphicsScene(this);
scene->addPixmap(image);
scene->setSceneRect(image.rect());
ui->mainImage->setScene(scene);
}
【讨论】: