当前位置:首页 » 图片资讯 » QT如何给子窗口更换图片
扩展阅读
美女健身跳河视频 2023-08-31 22:08:21
西方贵族美女照片真人 2023-08-31 22:08:15

QT如何给子窗口更换图片

发布时间: 2022-12-18 15:57:38

Ⅰ Qt在界面设计时怎么给窗口添加背景图片

这是一种方式:
QPixmap pixmap(QString::fromUtf8("./icon/background.png"));//当前文件夹下面的图片
QPalette palette = this->palette();
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
还有一种添加资源文件,在资源文件里面直接添加

Ⅱ qt实现多张图片的切换不使用ui控件

​ 通过上方控件中,寻找所适合的控件,之后将其拖拽到自己合适的位置上:

​ 具体布局如下图所示:

2.设置ui控件名称

​ 如上图所示,我将每一个单选按钮都设置了相对应的名字,分别为上方的radioButton_16 /32 /64 /128 /256

其余的控件也都设置了相应的类名(名字),那我们就来使用它们吧.

3.使用控件进行界面交互

3.1 选择图片

​ 右键点击选择图片按钮,之后点击转到槽选项,继续点击弹出框中的clicked()点击交互按钮‘会自动跳转到写入代码的位置,同时在Headers下的app.h中,会自动导入插槽内’意味着,我们能通过这个点击事件来展示我们所需要的交互内容.

​ 那么,着手于代码的操作吧:

​ ‘在Sources下的app.cpp中’

​ 我们能看到自动生成的代码块,其中:



app 我们所挂载的媒介,这个媒介app下,仍有着其他的属性
pushButton_file 这个按钮的名字
clicked 点击事件

​ 不信的话你可以试着点击ui界面的最底层区域,这样我们就能看到objectName的值是app了,当然,不要试图在你写代码期间修改这个媒介,否则,有你好受的…

void app::on_pushButton_file_clicked()
{
fileName = QFileDialog::getOpenFileName(this,tr("Open File"),".",tr("Images(*.png*.jpeg *.jpg)"));
//获取图片的路径 不过 一定要在“ app.h”里,加入以下头文件 #include <QFileDialog>
// #include <QDebug>
// #include <QFileInfo>
// 同时在‘app.h’的private中,加入: QString fileName; 否则会找不到这个名字从而报错
qDebug() << "fileName=" << fileName;

QFileInfo fi(fileName);
QString name = fi.fileName();
ui->label_filename->setText(name);
//QT 文件信息 将路径(fileName) 存储在 fi中, 然后 获取到fi里面的文件名称
//在这里,fi.fileName() 中的fileName并不是路径,而是路径中 所在的文件信息
//比如 fileName= "C:/Users/power/Pictures/0.jpg" 那么‘name’就是 0.jpg
//之后赋值给name,紧接着将这个name的值 送到 ui内的组件label_filename上,起名为 name
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
​ 上方,‘ui->label_filename’代表的是整个ui界面下,一个叫做label_filename的文本框,被设置了叫做‘name’的名字, 名字为选择图片的文件名,比如: 0.jpg

​ 简单来说: 我所拖拽到ui界面中的所有控件,都是ui的儿子,那么 作为父亲是不是随时可以调用自己的儿子呢?(这点毋庸置疑)

​ 效果图:

​ 心细的在左上角会发现一个图片,那么,我们怎么导入这个图片,使得个性化呢

3.2 个性化窗口图片

​ 右键这个工程文件->在出现的菜单中选择Add New选项,接着选择左侧Qt,在右侧选择Qt Resourse File,最后选择右下方choose按钮.接着在File name中写入文件名为images,(可以写别的文件名,并不一定要这个),下一步后点击完成.

​ 这些操作都完成后,会在工程文件下出现Resources,并且在内部存在一个images.qrc文件

​ 那么,我们接着右键->添加现有文件

​ 随后会弹出一个窗口,在其中我们选择images,并选择其中的图片,这样图片就加载进来了.(一定要提前在这个工程文件下放入images文件夹,同时将文件夹中放入图片.)

之后在app.ui中,选中整个窗口,找到windowicon,然后点击三角,选择资源后,将图片放入.就有图标喽

RC_ICONS = images/logo.ico
1

​ 如果想发布时带有图标,一定要在XX.pro文件内,写上这句话:

3.3 默认选中单选框

​ 正常来说,我们会默认选中一个单选框,使得界面美观

​ 这样,我们就默认选中64X64的了

3.4 预览图片

​ 同上,选择‘预览图片’,右键 转到槽 ‘仍然是点击事件’,之后在‘app.h’中private属性下加入,并加入头文件:

void app::on_pushButton_showPic_clicked()
{
if(ui->radioButton_16->isChecked()){ //16X16被选中的话
picHeight = 16;
picWidth = 16;
}else if(ui->radioButton_32->isChecked()){
picHeight = 32;
picWidth = 32;
}else if (ui->radioButton_64->isChecked()) {
picHeight = 64;
picWidth = 64;
}else if (ui->radioButton_128->isChecked()) {
picHeight = 128;
picWidth = 128;
}else if (ui->radioButton_256->isChecked()) {
picHeight = 256;
picWidth = 256;
}
qDebug() << "picWidth:" << picWidth;
qDebug() << "picHeight:" << picHeight;
if(!fileName.isEmpty()){ //判断文件名是否为空
QPixmap map(fileName);
QPixmap newMap = map.scaled(picWidth,picHeight);
ui->label_picture_show->setPixmap(newMap);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
picHeight 自己设置的图片的高度
picWidth 自己设置的图片的宽度
isChecked 代表 是否选中当前的元素
​ 总而言之,就是我选择其中一个按钮,然后根据自己设置的图片大小,设置你所展示的图片大小,比如:

Ⅲ qtcreator如何在stylesheet中设置图片

qtcreator如何在stylesheet中设置图片
项目建立完成后:
右键点你的项目 “Add New”->"QT Resource file" 生成一个qrc文件
然后双击它 点add 然后Add Prefix 再Add file 完事之后build一下
在你的ui上点右键 ->Change StyleSheet ->add Resource ->backgroud-image 顺着往下点就能看见你在qrc里添加的那张图片了
摘要:

QT Create中,对button或者window等部件设置背景、颜色、透明等样式时,需要用到style sheet,可以直接在代码里写,也可以在ui设计师里通过右键change style sheet的方法来设置,本人是使用的后面的方式,下面介绍几种常见的用法。

介绍:

作者使用的开发环境为:qt creator 201005, qt4.7。

1、利用style sheet给窗体设置背景

使用stylesheet设置背景图片还是有一些要注意的,如果是在mainwindow和dialog中,直接右键change style sheet在add resource中选择background-image或者border-image,选择资源文件中的图片就行了(前者是按像素显示图片,后者可根据窗体大小来自动缩放图片),如下图:

但在widget中就不行,你会发现,用同样的方法,背景并没有发生改变,而仅仅是它的子窗体背景图片发生了改变。

那么在widget中要如何做呢,我们在widget中放置一个frame,然后对frame通过stylesheet设置背景,后面窗体里所有的部件都放在这个frame里。

我们知道,子窗体会继承父窗体的属性,也就是说,父窗体的背景,在子窗体中也会有,那如何让子窗体不继承父窗体的背景呢,同样的,还是在Edit Style Sheet里,需下输入如下代码:

#desktop {
border-image: url(:/images/desktop.jpg);
}
#desktop * {
border-image:url();
}

desktop是你的窗体名。

2、menubar设置透明

我想做一个菜单按钮,像ubuntu的应用程序菜单一样,能在点击时弹出一个下拉框,我选择了用mainwindow来实现,但我如现menuba显示在顶层很难看,如何才能不让它显示呢。

设置menuba的stylesheet,

background-color:transparent

将背景设置为透明。

3、tool button不显示边框

当我们设置button的icon时,发现icon的形状并不与button完全一致,如下图:

设置stylesheet

border-style: flat;

效果如下:

注意,一定要选择tool button,而不要选择push button,因为push button活动的时候会有一个虚线框。

要达到上图的效果,除了设置border-style:flat,可不可以将style设置为transparent呢?设置成transparent后,显示上看,效果是和上图的一样,但当按下时,button没有被图片覆盖的地方就会显示被按下时的颜色。

4、在父窗体的stylesheet中设置子部件的属性

假设有多个button,且它们的样式是一样的,那是不是需要一个个设置呢?不需要的,我们可以在父窗体中进行设置,那么子部件都会继承它的属性。

如果某个button的样式特殊,再单独修改就行了,下面举个实例,在父窗体的stylesheet中设置如下

QDialog{background:rgb(229, 255, 239)}

QMenuBar{background:url(:/image/header.bmp)}

QStatusBar{background:url(:/image/header.bmp)}

QPushButton{background:url(:/image/header.bmp)}

QLCDNumber{background:url(:/image/lcd.bmp)}

QLabel{color: rgb(0, 0, 255)}

QDial{background-color: rgb(67, 67, 67)}

QGroupBox {

border-width:2px;

border-style:solid;

border-color:#FFFFFF;

}

QGroupBox{color: rgb(255,255, 255)}

QToolButton{border-style: flat;}

Ⅳ qt中主窗口背景设置

以前遇到的很多小知识,从今天开始都一点一点记录下来。。。
窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置?下面介绍三种方法:
一、QPalette设置背景
二、实现paintEvent,使用QPainter来绘制背景
三、使用QSS来设置背景
关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然可以。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式
子部件一般情况下也不需要设置背景图片,即使需要使用QSS也完全可以满足。设置较多的是背景色与图标,QSS中使用background或者background-color的方式可以实现背景色的设置,图标则可以使用setPixmap或者setIcon来设置!
下面介绍QPalette以及paintEvent
一、QPalette设置背景
构造函数中可以使用如下方式:
(1)设置背景色
QPalette palette(this->palette());
palette.setColor(QPalette::Background, Qt::black);
this->setPalette(palette);
或:
QPalette palette;
palette.setBrush(this->backgroundRole(), Qt::black);
this->setPalette(palette);
这里setColor和setBrush都可以使用!
(2)设置背景图片
QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());
QPalette palette(this->palette());
palette.setBrush(QPalette::Background, QBrush(pixmap));
this->setPalette(palette);
上面方式无论设置背景色还是背景图片QPalette::Background与this->backgroundRole()是等价的!
二、paintEvent设置背景
(1)设置背景色
void IIIMark::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setBrush(Qt::black);
painter.drawRect(this->rect());
}
(2)设置背景图片
void IIIMark::paintEvent(QPaintEvent *)
{
QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());
QPainter painter(this);
painter.drawPixmap(this->rect(), pixmap);
}
注意:
(1)以上都是用scaled方式对图片进行了适应窗口大小的设置,因为所给的图片大小不一定满足要求,所以采用此方式!当然图片经过拉伸或者压缩之后会变形(纯色图片除外),所以对图片采用此方式时需要注意。
(2)设置背景范围的时候如果需要充满整个窗口最好使用this->rect(),因为我看到很多人在使用QRect(0, 0, 400, 400)之类的语句,那么如果窗口大小改变了呢?此句是不是要跟着变呢?
(3)如果需要背景图片或者背景色随可以发生改变时,也就是所谓的换肤功能,则采用paintEvent的方式,在需要改变的时候使用update()来进行更新。
(4)this->setAutoFillBackground(true)又让我想起了tr(),被很多人滥用。这句话在什么时候使用呢?不妨采用QPalette设置背景的方式加上与去掉这句话对比一下(在有父窗口的情况下使用)。如果这个QWidget直接show,则有背景色,如果放到一个父窗口中,就没有效果。添加该句即可!

Ⅳ qt中如何添加窗体背景图片如何改变窗体背景颜色

一,
添加窗体背景
在窗体构造函数中加入:方法1:
this-setStyleSheet(tr("background:url(pic.jpg)"));方法二:
this-setAutoFillBackground(true);
QPalette
myPalette;
myPalette.setBrush(this-backgroundRole(),
QBrush(QPixmap("./pic.jpg")));
this-setPalette(myPalette);
二,改变背景颜色在窗体构造函数中加入: