精华内容
下载资源
问答
  • 1 Qt按钮图标设置 QIcon myicon1; myicon1.addFile(tr(":/image/Resource/new.png")); ui->new_btn->setIcon(myicon1); ui->new_btn->setIconSize(ui->new_btn->size()); //ui.btn_calib...

    本文内容皆为Qt 5.13版本。 使用 IDE为 QTCreator。若是 VS+QT插件环境则可能有略微差异。

    推荐一个不错的图标网站,大部分资源都可以免费下载:
    https://www.easyicon.net

    1 Qt中按钮图标的设置

    	QIcon myicon1;
    	myicon1.addFile(tr(":/image/Resource/new.png"));
    	ui->new_btn->setIcon(myicon1);
    	ui->new_btn->setIconSize(ui->new_btn->size());
    	//ui.btn_calib->setIconSize(QSize(90, 90));
    	ui->new_btn->setStyleSheet("background-color:rgba(0,0,0,0)");//透明背景
    	ui->new_btn->setFocusPolicy(Qt::NoFocus);
    	//设置按钮悬停事件,鼠标移上去的时候变化光标样式
    	ui->new_btn->installEventFilter(this);//安装事件过滤器
    

    setIcon的缺陷是无法自由调整图标和文字之间的间距。
    为实现鼠标移上按钮时,光(鼠)标样式发生变化,需要重载public bool eventFilter方法:

    bool mainWindow::eventFilter(QObject *obj, QEvent *event)
    {
        if (obj == ui->new_btn || obj == ui->open_btn || obj == ui->add_up_btn
                || obj == ui->add_btn || obj == ui->add_down_btn
                || obj == ui->modify_btn || obj == ui->ensure_btn || obj == ui->delete_btn)
            {
                if (event->type() == QEvent::HoverEnter)
                {
                    this->setCursor(Qt::PointingHandCursor);
                }
                else if (event->type() == QEvent::HoverLeave)
                {
                    this->setCursor(Qt::ArrowCursor);
                    return true;
                }
            }
            return QWidget::eventFilter(obj, event);
    }
    

    还有另一种设置图标和文字的方法(使用Qlabel和布局嵌入在自带的QpushButton中):

    QLabel* label = new QLabel();
        QLabel* label2 = new QLabel();
        label2->setStyleSheet(QString("border:1px solid red;"));
        label->setStyleSheet(QString("border:1px solid red;"));
        label2->setPixmap(QPixmap(":/image/Resource/new.png"));
        label->setText("123");
        label->setFixedWidth(80);
        QHBoxLayout* myLayout = new QHBoxLayout();
        myLayout->addSpacing(10);
        myLayout->addWidget(label2);
        myLayout->addSpacing(30);
        myLayout->addWidget(label);
        myLayout->addStretch();
        ui->pushButton->setLayout(myLayout);
    

    网上还、还、有另一种设置按钮图标的办法(使用样式表 setStyleSheet)。

    #include <QToolButton>
    #include <QApplication>
    
    QString FormStyleSheetString( const QString & name )
    {
      const QString thisItemStyle( "QToolButton:enabled { image: url(" + name + "_normal.png); }  "
                                 "QToolButton:pressed { image: url(" + name + "_pressed.png); }  "
                                 "QToolButton:disabled { image: url(" + name + "_disabled.png); }  "
                               );
    
      return thisItemStyle;
    }
    
    int main(int argc, char * argv[])
    {
        QApplication qapp(argc,argv);
    
        QToolButton button;
        button.setStyleSheet( FormStyleSheetString( "button" ) );
        button.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        button.setIconSize(QSize(200,200));
        button.show();
    
        return qapp.exec();
    }
    

    2 按钮按下时浮动效果设置

    void mainWindow::on_ensure_btn_pressed()
    {
        ui->ensure_btn->move(ui->ensure_btn->geometry().x(), ui->ensure_btn->geometry().y() + 6);   //按下时Y坐标下移
    }
    
    void mainWindow::on_ensure_btn_released()
    {
        ui->ensure_btn->move(ui->ensure_btn->geometry().x(), ui->ensure_btn->geometry().y() - 6);//松开时Y坐标上移(还原位置)
    }
    

    3 QT的EXE程序图标设置

    QT下执行程序的图标设置还没有一种跨平台的解决方案,这里介绍的时windows平台下的方法。

    首先当然要准备一个.ico图标文件(假定为exe.ico),将其复制到工程目录当中(.pro文件所在的目录)。

    然后在QT Creator中Ctrl+N或 File - New File or Project,选择General中的Text File,名称填写为.rc文件(如exeIcon.rc),在里面只用写一行:

    IDI_ICON1               ICON     DISCARDABLE     "exe.ico"
    

    编辑.pro文件,里面应该有:

    DISTFILES += \
        exeIcon.rc
    

    在其下再添加一行(如果没有上面的内容也没事):

    RC_FILE = \
        exeIcon.rc
    

    如下图:
    在这里插入图片描述

    最后重新编译一下,新生成的exe文件的图标就会变成exe.ico的样子

    展开全文
  • 以QPushButton为例,设置按钮图标可以使用函数setIcon,设置图标大小使用setIconSize。 测试代码: 效果: 也可以直接使用样式表的方式: qproperty-icon和qproperty-iconSize分别表示图标属性和图标...

     

    原文链接:

    https://www.fearlazy.com/index.php/post/284.html

     

    以QPushButton为例,设置按钮的图标可以使用函数setIcon,设置图标大小使用setIconSize。

    测试代码:

    效果:

     

    也可以直接使用样式表的方式:

    qproperty-icon和qproperty-iconSize分别表示图标属性和图标大小属性,设置后显示效果同上。

     

    这种方式有个缺点就是不能为不同的状态(如按下按钮)设置不同的图标,而且也没办法设置图标与文字的间距。

    在不需要显示文字的情况下,可以使用image、background-image和border-image来设置图标,如果需要显示文字的话可以在按钮上

    添加一个布局,布局中添加两个label分别表示图标和文字,这种方式比较灵活,能更好的控制图标和文字的大小间距等,缺点就是太麻烦了。

     

    特别说明:
    若后续发现文章中的错误或者对文章内容补充将只在我的个人博客中进行更新。我的博客主要记录编程中学到的知识、踩过的坑以及一些莫名其妙的想法。
    欢迎来踩我的个人博客: fearlazy。
     

     

     

    展开全文
  • Qt设置按钮图标

    万次阅读 2013-06-07 19:04:31
    一个简单的按钮图片加载代码,一般人出现的问题都是加载的图片可能会很小,怎么解决这个问题呢?来看看下面的代码吧,对于相关的迷惑点我会给出讲解,同时在学习这个代码的过程中我们也学学其他的一些功能实现。如何...

    一个简单的按钮图片加载代码,一般人出现的问题都是加载的图片可能会很小,怎么解决这个问题呢?来看看下面的代码吧,对于相关的迷惑点我会给出讲解,同时在学习这个代码的过程中我们也学学其他的一些功能实现。如何显示中文、如何设置字体以及颜色等。

    #include <QApplication>

    #include <QPushButton>

    #include <QLabel>
    #include <QGridLayout>
    #include <QTextCodec>
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    //以下三行用于支持中文的现实
        QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb2312"));
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb2312"));
        QTextCodec::setCodecForTr( QTextCodec::codecForName("gb2312"));
        QWidget *widget = new QWidget();
        widget->setFixedSize(800, 600);
        widget->move(200,200);
        QPixmap *pixmap = NULL;
        pixmap = new QPixmap(200, 150);
        pixmap->load(":/castle.jpg");
        QIcon *icon = new QIcon(*pixmap);
        QPushButton *button = new QPushButton(*icon, "", widget);
    //以下代码为加载图片的关键所在,因为默认加载的图片大小可能与按钮本身的尺寸相差较大,
    //需要自己来调节,所以可以在此人为的指定加载后的图片大小
        button->setIconSize(QSize(190, 150));
        button->setFixedSize(200, 150);
        QLabel *label = new QLabel(widget);
        QLabel *label1=new QLabel(widget);
        label->setPixmap(*pixmap);
        label->setFixedSize(200, 150);
        label1->setText("Qt 按钮背景图片的加载");
    //以下代码用于设置label1字体显示的大小
        label1->setStyleSheet("font-size : 53px");
    //以下三句代码与以上代码可以实现相同的功能,但是区别在于,以下三句代码的作用范围是对整个界面的字体都产生作用。
        //QFont font  = app .font();
          //font.setPointSize(53);
          //app.setFont(font);
    //设置label1的颜色
        QPalette pe;
        pe.setColor(QPalette::WindowText,Qt::blue);
        label1->setPalette(pe);
        QGridLayout *layout=new QGridLayout;
        layout->addWidget(button,0,0);
        layout->addWidget(label,0,1);
        layout->addWidget(label1,1,0,2,1);
        widget->setLayout(layout);
        widget->showNormal();
        return app.exec();
    }
    展开全文
  • 一、设置按钮图标显示 ui->Bt->setIcon(QIcon(":/images/联机.png")); ui->Bt->setIconSize(QSize(150,150)); 二、设置按钮为透明 1)可以在按钮的属性找到flat打上勾 2)在按钮stylesheet属性里...

    QT的按钮设置图标及设置透明

    一、设置按钮的图标显示

        ui->Bt->setIcon(QIcon(":/images/联机.png"));
        ui->Bt->setIconSize(QSize(150,150));
    

    二、设置按钮为透明
    1)可以在按钮的属性找到flat打上勾
    2)在按钮stylesheet属性里输入“background-color:transparent”或者“border:none”等
    3)如下代码设置

        ui->Bt->setStyleSheet("background-color:rgba(0,0,0,0)");
        ui->Bt->setFocusPolicy(Qt::NoFocus);
    

    三、运行即可看到效果

    展开全文
  • QT5 设置按钮图标自适应大小

    万次阅读 2018-01-05 15:34:43
    QPushButton *button = new QPushButton(this); button->setGeometry(50, 50, 100, 50); button->setStyleSheet("border-image:url(:/timg.jpg)"); connect(button, &QPushButton::pressed, [=](){ ...
  • QT按钮添加图标设置透明

    千次阅读 多人点赞 2019-05-24 21:44:13
    QT按钮添加图标设置透明 qt中自带的控件有时不能满足我们的需求,这时可以自定义一些控件,最简单的是将按钮变成我们想要的图标,在尝试的过程中有一个按钮的阴影问题,我的想法是添加图标后就完全看不到阴影...
  • Qt通过qss设置按钮图标样式

    千次阅读 2020-02-26 10:57:07
    closeButton = new QPushButton(); closeButton->setStyleSheet("QPushButton{image:url(:/xx/Resources/blackclose.png);background-color:transparent;}" "QPushButton:hover{image:url(:/xx/Resources/bl....
  • 可以使用QToolButton,设置按钮的样式为Qt::ToolButtonTextUnderIcon(文字在图标下方)。 setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->OnlineBt->setText("联机"); ui->OnlineBt->...
  • Qt设置按钮背景图片

    千次阅读 2020-01-01 02:32:34
    用qss可以修改按钮的样式,但是一些复杂的图形用图片来做显示效果更好,...//设置按钮图标,按钮的默认大小是 30*30,可以自己指定 void setButtonImage(QPushButton *button, QString image) { QPixmap pixmap(im...
  • 1.1想要设置按钮左边是图标,右边是文字,则可以用QIcon类控件,可以直接用下面这条语句。(注意:必须先将图标资源文件添加进来,并且有一个图标名称为folder.png) QPushButton btn = new QPushButton(QIcon::...
  • LINUX QT Designer 设置按钮图标

    千次阅读 2011-04-09 21:06:00
    QT3中,发现无法设置图标,于是,在QT2.3.2中就可以设置图标,在CPP中和V3不同。需要INCLUDE UI.H,保持整洁
  • QPushButton*leftToRightBtn=newQPushButton; leftToRightBtn->setToolTip(tr("TransferFile(s)fromLefttoRight")); leftToRightBtn->setFlat(true); leftToRightBtn->set...
  • 关于qt使用qt designer设置好工具按钮图标但运行时不显示的问题 这种情况分为两种 编译时不能显示图标 打包好添加dll文件后不能显示图片 对于第一种情况 点击creator左上角的构建,点击执行qmake即可 对于第二种...
  • Qt 利用stylesheet 设置按钮五态图标

    千次阅读 2014-11-06 22:32:07
    用过Qt的相信大家都对QPushButton这个类十分熟悉,下面将介绍一种利用styl

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 181
精华内容 72
关键字:

qt设置按钮图标