【问题标题】:How to set image on QPushButton?如何在 QPushButton 上设置图像?
【发布时间】:2011-03-09 10:40:13
【问题描述】:

我想在QPushButton上设置一个图像,QPushButton的大小应该取决于图像的大小。我可以在使用 QLabel 时做到这一点,但在使用 QPushButton 时却不行。

所以,如果有人有解决方案,请帮助我。

【问题讨论】:

  • 在 Qt 中有两种方法可以在按钮上设置图像,程序化设置图像的方式,qt-articles.blogspot.com/2010/06/… 从样式表如何设置图像,qt-articles.blogspot.com/2010/06/…
  • 太好了……效果很好……非常感谢……
  • 不客气 :) 如果您觉得答案是正确的,请将其标记为正确,以便对遇到类似问题的其他人有所帮助。

标签: qt


【解决方案1】:

你可以做的是使用一个像素图作为一个图标,然后把这个图标放到按钮上。

为确保按钮大小正确,您必须根据像素图大小调整图标大小。

这样的事情应该可以工作:

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());

【讨论】:

  • 我知道这是旧的,但我已经这样做了,按钮图标仍然是默认的。我没有收到任何错误,我的所有资源文件似乎都已加载,并且我的路径很好。为什么这对我不起作用?
【解决方案2】:
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));

【讨论】:

    【解决方案3】:

    您可能还想设置按钮大小。

    QPixmap pixmap("image_path");
    QIcon ButtonIcon(pixmap);
    button->setIcon(ButtonIcon);
    button->setIconSize(pixmap.rect().size());
    button->setFixedSize(pixmap.rect().size());
    

    【讨论】:

      【解决方案4】:

      你也可以使用:

      button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
      

      注意:这有点骇人听闻。您应该仅将其用作最后的手段。图标应从C++ 代码或Qt Designer 设置。

      【讨论】:

        【解决方案5】:

        我认为您不能在任何现有按钮类上设置任意大小的图像。 如果你想要一个像按钮一样的简单图像,你可以编写自己的 QAbstractButton 子类,如下所示:

        class ImageButton : public QAbstractButton {
        Q_OBJECT
        public:
        ...
            void setPixmap( const QPixmap& pm ) { m_pixmap = pm; update(); }
            QSize sizeHint() const { return m_pixmap.size(); }
        protected:
            void paintEvent( QPaintEvent* e ) {
                QPainter p( this );
                p.drawPixmap( 0, 0, m_pixmap );
            }
        };
        

        【讨论】:

        • 感谢您的回答.. 请您帮我展示如何通过使用 QPushButton 而不是 QAbstractButton 来实现此代码。因为我的要求是使用 QPushButton。所以,请帮帮我。
        • 正如我所说,我认为没有合适的方法。如果有的话,QStyle 和样式表可能会有所帮助。看看那里。
        【解决方案6】:

        这是旧的,但它仍然有用, 使用 QT5.3 进行了全面测试。

        小心,关于资源路径的例子:

        在我的例子中,我在源目录项目中创建了一个名为“Ressources”的资源目录。

        文件夹“ressources”包含图片和图标。然后我在Qt中添加了前缀“Images”所以像素图路径变为:

        QPixmap pixmap(":/images/Ressources/icone_pdf.png");

        JF

        【讨论】:

        • 答案应该提供更多信息如何使用 QPixmap 和 QPushButton
        【解决方案7】:

        您可以在 QtDesigner 中执行此操作。只需单击您的按钮,然后转到图标属性,然后选择您的图像文件。

        【讨论】:

        • 在尝试为每个状态设置图标之前,使用基本的“图标”设置执行此操作,至少要看到它与您的图像一起使用。将图标的大小设置为您的图像的大小,或者至少对您的图像足够大,否则将不会显示。
        • 这不起作用,因为“图标”部分要求您添加一些主题。 QT6.1。我以为它会打开一个对话框,我可以选择一个图像文件,但不是真的。
        【解决方案8】:

        只需使用此代码

        QPixmap pixmap("path_to_icon");
        QIcon iconBack(pixmap);
        

        注意:"path_to_icon"是你项目的文件.qrc中图片图标的路径你可以找到如何添加.qrc文件here

        【讨论】:

          猜你喜欢
          • 2011-09-14
          • 1970-01-01
          • 1970-01-01
          • 2014-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          相关资源
          最近更新 更多