精华内容
下载资源
问答
  • Qt图标按钮

    千次阅读 2019-03-31 21:25:09
    Qt自带的按钮QButton,基础而丑陋,能够满足功能需求,而无法满足审美需求,因此,在GUI开发的时候,很多时候要定制自己的图标按钮,其具体操作十分简单,通过Qt Designer即可。  第一步,打开VS项目管理器中的Qt...

      Qt自带的按钮QButton,基础而丑陋,能够满足功能需求,而无法满足审美需求,因此,在GUI开发的时候,很多时候要定制自己的图标按钮,其具体操作十分简单,通过Qt Designer即可。

      第一步,打开VS项目管理器中的Qt资源文件,添加资源,注意是Qt资源文件,不是VS资源文件,Qt的资源文件在资源文件夹中,且与类名相同,VS的资源文件在资源管理器的根目录中(图中最后一行),与项目名同名。
    在这里插入图片描述
      添加所需资源文件,并保存。这一步其实可有可无,使用Qt资源管理器的目的是为了管理资源,方便后面Qt 设计器的使用。
    在这里插入图片描述
      打开Qt Designer,在Button按钮属性编辑器中找到icon选项,选择资源文件即可:

    在这里插入图片描述

      同时还可以在iconsize中调整图标的大小,如果想显示无边框的类型,需要在QPushButton中勾选flat选项
    在这里插入图片描述
      最后效果:
    在这里插入图片描述

      点击左上角按钮,打开图片文件,并显示在下方的QLabel区域中。关于图标素材,网上有很多主题网站都可以免费下载,非常给力,这里推荐两个比较常用的:

    1. https://www.iconfont.cn
    2. 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...

    本文内容皆为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的样子

    展开全文
  • QT按钮添加图标并设置透明

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

    QT 为按钮添加图标并设置透明

    qt中自带的控件有时不能满足我们的需求,这时可以自定义一些控件,最简单的是将按钮变成我们想要的图标,在尝试的过程中有一个按钮的阴影问题,我的想法是添加图标后就完全看不到阴影了,找了很多办法才解决,下面就是过程:

    一、为按钮添加图标

    我的方法是将所需要用到的图片添加到资源文件里,然后给按钮添加图标。

    1、添加资源文件

    建好工程后,点击“File”->“New File or Project …”,在“Files and Classes” 下面选择“Qt”,然后在选择右面的“Qt Resource File”:
    在这里插入图片描述
    点击确定,会提示文件命名和所要添加到的项目,这里我命名为“resource”,添加到"icon_practice.pro"项目里面,可以看到在项目的文件列表中出现了一个"resource.qrc"的文件。
    在这里插入图片描述
    右键单击"resource.qrc",选择"Open in Edit",然后点击下方的"Add"按钮,选择"Add Prefix"(相当于添加一个分类),并命名,此处我命名为image 。
    在这里插入图片描述
    下一步添加图片,需要下载一些".ico"后缀的图片,我下载了几个图片,放在icon文件夹里,然后把icon文件夹放在我的"icon_practice.pro"项目所在文件夹里。准备好以后,点击"Add"按钮,选择"Add Files",找到文件,添加进去。
    在这里插入图片描述

    2、给按钮添加图标

    在ui设计界面添加一个按钮,大小设置为90*90,注意把按钮上面的文字去掉,要不然的话添加图标后会是左边图标,右边文字(需要那样的效果的话可以试试)。
    在这里插入图片描述
    我使用了代码方式添加图标:

    minnwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QIcon>   //注意包含头文件
    
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        QIcon myicon; //新建QIcon对象
        myicon.addFile(tr(":/image/icon/1.ico")); //让QIcon对象指向想要的图标
        ui->pushButton->setIcon(myicon); //给按钮添加图标
        ui->pushButton->setIconSize(QSize(90,90));//重置图标大小
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    

    结果如图:
    在这里插入图片描述
    可以看到,按钮上显示了图标。

    二、设置图标按钮为透明

    从网上看设置图标透明的方法有好几种,比如:
    1)setFlat(true)
    2)找到按钮属性里最下面的flag属性,勾选对话框(其实与1)一样的意思)
    在这里插入图片描述
    3)在按钮stylesheet属性里输入“background-color:transparent”或者“border:none”等
    在这里插入图片描述

    4)setStyleSheet(“background-color: rgba(0, 0, 0, 0)”);
    大致是这样的方法,效果如图:
    在这里插入图片描述
    可以看到此时显示按钮原来的实体的颜色没了,但是出现了原来按钮大小的阴影,其实如果我们再添加一个按钮,运行后点击后来添加的按钮,会发现图标的阴影没有了,也就是说上面的方法部分实现了静态时的背景透明:
    在这里插入图片描述
    而再次点击图标按钮时候,阴影还是存在!这对于追求完美的我们来说是不能接收啊!!怎么解决呢?
    最后试了半天,原来是找的属性不对,用了下面的方法就可以实现目的了:

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QIcon>   //注意包含头文件
    
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        QIcon myicon; //新建QIcon对象
        myicon.addFile(tr(":/image/icon/1.ico")); //让QIcon对象指向想要的图标
        ui->pushButton->setIcon(myicon); //给按钮添加图标
        ui->pushButton->setIconSize(QSize(90,90));//重置图标大小
        ui->pushButton->setStyleSheet("background-color:rgba(0,0,0,0)");
        ui->pushButton->setFocusPolicy(Qt::NoFocus);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    

    之前之所以老是有阴影是涉及到Qt控件的聚焦策略问题,pushbutton默认的聚焦策略是StrongFocus,我们要把它改成NoFocus就行了,这个也可以在ui界面的控件属性选项里面改。
    上面程序里的

    ui->pushButton->setStyleSheet("background-color:rgba(0,0,0,0)");
    

    这句代码也可以改成

    ui->pushButton->setStyleSheet("background-color:transparent");
    

    或者在stylesheet属性里面添加相应约束,但注意不能使用 1)和 2)的方法,否则,在点击按钮时,虽然没显示阴影,但是把原来的按钮都显示出来了(还不如显示阴影呢~)。最后的结果就是这样:
    在这里插入图片描述
    就算点破屏幕也再不会有阴影啦!!!

    展开全文
  • QT按钮设置图标及设置透明 一、设置按钮图标显示 ui->Bt->setIcon(QIcon(":/images/联机.png")); ui->Bt->setIconSize(QSize(150,150)); 二、设置按钮为透明 1)可以在按钮的属性找到flat打上勾 ...

    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, [=](){ ...
  • 以QPushButton为例,设置按钮图标可以使用函数setIcon,设置图标大小使用setIconSize。 测试代码: 效果: 也可以直接使用样式表的方式: qproperty-icon和qproperty-iconSize分别表示图标属性和图标...
  • Qt设置按钮图标

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

    千次阅读 2018-05-24 15:31:32
    博主是一个qt小白,因为项目需求,一点一点摸索,记下这些也是为了怕自己忘记。首先要添加资源文件,把下载好的图标icon文件夹放在工程文件下。双击user.qrc单击Add,选择Add Prefix修改Prefix名为 /File ;再选择...
  • 1.1想要设置按钮左边是图标,右边是文字,则可以用QIcon类控件,可以直接用下面这条语句。(注意:必须先将图标资源文件添加进来,并且有一个图标名称为folder.png) QPushButton btn = new QPushButton(QIcon::...
  • Qt按钮添加图标

    2014-08-04 17:20:00
    ui.btnTest2->setIcon(QIcon(QPixmap(":/DlgGUO/icon/qd.ico")));...不知道是Qt帮助上面说的不清楚,还是怎么的,看不明白,好不容易找到用法,记着留用 转载于:https://www.cnblogs.com/guobbs/p/3890620.html...
  • 关于qt使用qt designer设置好工具按钮图标但运行时不显示的问题 这种情况分为两种 编译时不能显示图标 打包好添加dll文件后不能显示图片 对于第一种情况 点击creator左上角的构建,点击执行qmake即可 对于第二种...
  • 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....
  • QT按钮设置文字在图标的下方 可以使用QToolButton,设置按钮的样式为Qt::ToolButtonTextUnderIcon(文字在图标下方)。 setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->OnlineBt->setText("联机");...
  • Qt中实现按钮的图片在左,文字在右,主要有两种方法,如下: 方法一 : 设置按钮内部布局 ui->pushButton->setIcon(QIcon(":/pic/share.png")); ui->pushButton->setLayoutDirection(Qt::LeftToRight)...
  • QT工具栏添加按钮图标

    千次阅读 2020-05-08 09:28:33
    QT工具栏添加按钮图标 https://www.cnblogs.com/yang12318/p/10699429.html
  • Qt中如何给按钮图标(背景图片)

    千次阅读 2019-02-24 09:00:06
    Qt中如何给按钮图标(背景图片) 1. Qt Designer中拖入一Tool Button 2. 选择图标的图片放入工程目录下,如放在Resources内 3. 双击工程的Resource Files下的qrc文件,如图 4. 在弹出的窗口中,...
  • Qt QML自定义实现带图标按钮

    千次阅读 2020-03-12 11:38:48
    图标文本可自定义 按下颜色可自定义 进入颜色可自定义 退出颜色可自定义 可自定义鼠标左键按下功能 可自定义鼠标右键按下功能 代码实现 MyIconButton.qml文件 import QtQuick 2.0 Rectangle { id: rec property...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,614
精华内容 3,445
关键字:

qt按钮图标