qt中添加资源文件以及添加菜单图标、工具栏中菜单的快捷方式、窗口以及对话框的icon

 1、file--new-QT resource file,就会在工程中添加一个资源文件,然后单击Add下拉框,选择Add prefix,可以将生成的/new/prefix的后缀改为其他的名字,如file。然后在单击Add下拉框,选择Add files,将需要的图标文件添加过来,然后保存即可。

 

2、添加好资源文件后,在ui中Action Editor双击,弹出的Icon中添加即可。

     如果菜单图标添加成功,就可以在Action Editor中把这个图标拖动到工具栏,然后给它添加响应

     如:connect(ui->action_LgDlgMenu,SIGNAL(triggered()),ui->LgDlgMenu,SLOT(trigger()));工具栏的菜单图标和菜单栏的菜单项可以实现同样的功能。

 

3、添加好资源文件后,在窗口和对话框相应的.cpp文件中调用setWindowIcon()即可。如:

    setWindowIcon(QIcon(":/new/prefixIcon/recourses/loginDlg.png"));

    这里的关键是QIcon的资源文件路径的设置要正确,否则图标无法显示

 

4、工具栏中添加菜单的快捷方式:

    这里涉及到一个QAction的类,然后向工具栏添加QAction的对象。要使单击工具栏上菜单的图标实现和菜单一样的功能,需要把QAction对象的信号与菜单的槽连接起来。如:

QAction *pLoginAction = new QAction(QIcon    (":/new/prefixTitle/recourses/title.png"),tr("&LoginDlg"),this);
    pLoginAction->setShortcut(QKeySequence(tr("Ctrl+L")));
    pLoginAction->setStatusTip(tr("Pop up a dialog"));
   QObject::connect(pLoginAction,SIGNAL(triggered()),ui->LoginDlgMenu,SLOT(trigger()));
    ui->mainToolBar->addAction(pLoginAction);

 

 

 

<think>我们正在使用Qt设计器来设置QPushButton的图片状态,特别是正常状态和按下状态。根据引用[3],我们可以使用样式表(stylesheet)来设置按钮的不同状态,包括悬停(hover)和按下(pressed)等。在设计器中,我们可以通过属性编辑器来设置样式表。由于用户希望使用设计器(Designer)来设置,因此我们不涉及代码方式(虽然引用[1]和[2]提到了代码,但用户要求设计器设置)。我们可以通过以下步骤实现:步骤:1.在Qt设计器中拖放一个QPushButton到窗体上。2.选中该按钮,在属性编辑器中找到“styleSheet”属性,点击后面的三个点按钮打开样式表编辑器。3.在样式表编辑器中,我们可以为不同的状态设置背景图片或者边框等。这里我们关注正常状态(normal)和按下状态(pressed)。样式表示例:我们可以使用以下语法:QPushButton{border-image:url(:/images/normal.png);/*正常状态图片*/}QPushButton:pressed{border-image:url(:/images/pressed.png);/*按下状态图片*/}说明:-这里的路径":/images/normal.png"是资源文件中的路径,所以首先需要将图片添加资源文件中(如果还没有添加的话)。-也可以使用其他属性,比如background-image,但是border-image会拉伸图片以填充整个按钮,而background-image默认不会拉伸(除非设置background-repeat:no-repeat;和background-position:center;等)。通常使用border-image可以更方便地适应按钮大小。如果还没有资源文件,需要先创建资源文件添加图片:1.在Qt设计器中,点击菜单栏的“工具”->“资源浏览器”(或者右侧的资源浏览器窗口)。2.点击“编辑资源”按钮(铅笔图标),在弹出的对话框中选择“编辑资源文件...”,然后创建一个新的资源文件(.qrc)并添加图片。3.添加完成后,在样式表中就可以使用资源路径了。另外,引用[3]提到了动态属性,但这里我们不需要,因为样式表已经可以处理状态。注意:如果按钮有文字,可能需要在样式表中设置文字的位置和颜色,以及是否显示等。如果希望只显示图片,可以在设计器中设置按钮的text属性为空,并设置icon属性为无(因为我们要用样式表设置背景)。另一种方法是使用按钮的icon属性,但icon属性设置的是图标,并且图标的大小和状态需要单独设置,而样式表更灵活,可以设置背景图片。因此,推荐使用样式表。示例步骤:1.创建资源文件(假设已经创建,并添加了normal.png和pressed.png)。2.设置样式表:QPushButton{border-image:url(:/prefix/images/normal.png);}QPushButton:pressed{border-image:url(:/prefix/images/pressed.png);}3.调整按钮大小以适应图片,或者设置按钮的固定大小(在属性编辑器中设置minimumSize和maximumSize相同,或者设置固定大小fixedSize)。如果按钮大小变化,border-image会拉伸图片,如果不想拉伸,可以使用background-image,并设置background-repeat为no-repeat,同设置background-position居中,并可能需要设置按钮的大小与图片一致。所以,根据具体需求选择。总结:使用设计器中的样式表编辑器,我们可以为QPushButton的不同状态设置不同的背景图片。通过设置normal状态和pressed状态的border-image或background-image来实现。引用[2]提到了QPushButton的基本用法,但主要是代码层面的信号与槽,而这里我们关注设计器的样式表设置。最后,因为用户要求的是设计器设置,所以不需要编写代码。相关问题:1.除了按下状态,还有哪些常用的按钮状态可以设置图片?2.如何在Qt设计器中管理资源文件(.qrc)?3.使用样式表设置按钮图片,如何保持图片比例不拉伸?</think> 在Qt设计器中为QPushButton设置不同状态(正常/按下)的图像效果,可以通过两种主要方式实现: ### 方法一:使用样式表(推荐) 1. **打开Qt设计器**,拖拽一个QPushButton到窗体 2. **右键按钮 → 改变样式表**,打开样式表编辑器 3. **设置正常状态样式**: ```css QPushButton { background-image: url(:/images/normal.png); border: none; /* 可选:移除边框 */ } ``` 4. **设置按下状态样式**: ```css QPushButton:pressed { background-image: url(:/images/pressed.png); } ``` 5. **注意**: - 图片路径需提前添加资源文件(.qrc)中 - 使用`border-image`替代`background-image`可自动拉伸图片填充按钮 - 设置`background-repeat: no-repeat;`避免平铺[^3] ### 方法二:使用图标属性 1. 在属性编辑器中设置**icon**属性: ```ini normalIcon = [选择正常状态图片] ``` 2. 在代码中动态改变按下状态(需关联信号槽): ```cpp // 在构造函数中关联 connect(ui->pushButton, &QPushButton::pressed, [=](){ ui->pushButton->setIcon(QIcon(":/images/pressed.png")); }); connect(ui->pushButton, &QPushButton::released, [=](){ ui->pushButton->setIcon(QIcon(":/images/normal.png")); }); ``` ### 最佳实践建议 1. **准备图片资源**: - 推荐使用SVG矢量图或PNG透明背景图片 - 不同状态图片应保持相同尺寸 2. **资源管理**: ```qrc <RCC> <qresource prefix="/images"> <file>images/normal.png</file> <file>images/pressed.png</file> </qresource> </RCC> ``` 3. **设计器操作图示**: ``` [1] 右键按钮 → 改变样式表 [2] 添加资源 → 选择图片 [3] 分别设置 :pressed 状态 ``` ### 效果验证技巧 运行程序后: - 正常状态显示`normal.png` - 鼠标按下立即切换为`pressed.png` - 释放后恢复`normal.png` > 提示:使用`QPushButton:checked`状态还可实现开关按钮效果[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值