【问题标题】:Qt jpg image displayQt jpg图片显示
【发布时间】:2010-11-24 09:13:24
【问题描述】:

我想在 Qt UI 中显示 .jpg 图像。我在网上查了一下,发现http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html。我认为 Graphics View 也会这样做,而且它还具有显示视频的编解码器。如何使用图形视图显示图像?我浏览了图书馆,但因为我是 Qt 的新手,所以我找不到开始的线索。你能指导我一些关于如何在 Qt 中加载和显示图像的资源/示例吗?

谢谢。

【问题讨论】:

    标签: image qt graphics video view


    【解决方案1】:

    您可以将图像(作为像素图)附加到标签上,然后将其添加到您的布局中...

    ...
    
    QPixmap image("blah.jpg");
    
    QLabel *imageLabel = new QLabel();
    imageLabel->setPixmap(image);
    
    mainLayout.addWidget(imageLabel);
    
    ...
    

    抱歉,这是使用 Jambi (Qt for Java),所以语法不同,但原理是一样的。

    【讨论】:

      【解决方案2】:
      #include ...
      
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
          QGraphicsScene scene;
          QGraphicsView view(&scene);
          QGraphicsPixmapItem item(QPixmap("c:\\test.png"));
          scene.addItem(&item);
          view.show();
          return a.exec();
      }
      

      这应该可行。 :) 支持的格式列表可以是found here

      【讨论】:

      • 我们如何将它与在 QT Creator 中创建的 UI 一起使用?
      • 请注意,对于 Qt 4.6,此代码有错误。试试这个: int main(int argc, char *argv[]) { QString fileName("C:/aaa..gif"); QApplication a(argc, argv); QGraphicsScene 场景;场景.addPixmap(QPixmap(fileName)); QGraphicsView view(&scene); view.show();返回 a.exec(); }
      • 如何将 GraphicsView 添加到布局对象?
      • 要在 Creator 中使用,请将图像添加到资源文件中。创建一个 QLabel(是的,默认情况下它是文本)然后选择 Pixmap 属性。它将允许您选择要显示的图片。
      • 与使用 QLabel 相比,此解决方案是否有任何优势,即性能或其他方面?
      【解决方案3】:

      如果您只想将图像拖放到小部件上而无需图形 API 的复杂性,您也可以创建一个新的 QWidget 并使用 StyleSheets 设置背景。像这样的:

      MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { ... QWidget *pic = new QWidget(this); pic->setStyleSheet("背景图片: url(test.png)"); pic->setGeometry(QRect(50,50,128,128)); ... }

      【讨论】:

        【解决方案4】:

        我想在 Qt UI 中显示 .jpg 图像

        最简单的方法是为此使用 QLabel:

        int main(int argc, char *argv[]) {
            QApplication a(argc, argv);
            QLabel label("<img src='image.jpg' />");
            label.show();
            return a.exec();
        }
        

        【讨论】:

          【解决方案5】:

          我理解你的沮丧,“图形视图小部件”不是最好的方法,是的,它可以做到,但它几乎与现在使用标签(任何你想要的任何方式)完全相同列出的确实有效,但是...

          对于您和可能遇到此问题的任何其他人,他最简单的方法(您所问的任何方式)就是这样。

          QPixmap pix("Path\\path\\entername.jpeg");
              ui->label->setPixmap(pix);
          

          }

          【讨论】:

          • 这并不完整,对于不知道玩图像的人来说可能会非常困惑。
          【解决方案6】:
          1. 将标签(QLabel)添加到要显示图像的对话框中。这个 QLabel 将实际显示图像。将其调整为您希望图像显示的大小。

          2. 将图像添加到项目中的资源中。

          3. 现在进入 QLabel 属性并选择您为 pixmap 属性添加到资源中的图像。确保选中下一个属性 scaledContents 以将图像缩小到您希望看到的大小。

          就是这样,现在将显示图像。

          【讨论】:

            【解决方案7】:

            使用 QPainterQImage 在窗口小部件 (QMainWindow) 上绘画(只是另一种方法)

            class MainWindow : public QMainWindow
            {    
                public:
                    MainWindow();
                protected:
                    void paintEvent(QPaintEvent* event) override;
            
                protected:
                    QImage image = QImage("/path/to/image.jpg");
            };
            
            // for convenience resize window to image size
            MainWindow::MainWindow()
            {
                setMinimumSize(image.size());
            }
            
            void MainWindow::paintEvent(QPaintEvent* event)
            {
                QPainter painter(this);
                QRect rect = event->rect();
                painter.drawImage(rect, image, rect);
            }
            
            
            int main(int argc, char** argv)
            {
                QApplication a(argc, argv);
            
                MainWindow mainWindow;
                mainWindow.show();
                return a.exec();
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-09-05
              • 1970-01-01
              • 1970-01-01
              • 2016-02-25
              • 2021-06-28
              • 2010-11-24
              • 2010-11-17
              • 2019-05-27
              相关资源
              最近更新 更多