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

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

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

​ 具体布局如下图所示:

2设置ui控件名称

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

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

3使用控件进行界面交互

31 选择

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

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

​ 『在Sources下的appcpp中』

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

app 我们所挂载的媒介,这个媒介app下,仍有着其他的属性

pushButton_file 这个按钮的名字

clicked 点击事件

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

void app::on_pushButton_file_clicked()

{

fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"",tr("Images(pngjpeg jpg)"));

//获取的路径 不过 一定要在「 apph」里,加入以下头文件 #include <QFileDialog>

// #include <QDebug>

// #include <QFileInfo>

// 同时在『apph』的private中,加入: QString fileName; 否则会找不到这个名字从而报错

qDebug() << "fileName=" << fileName;

QFileInfo fi(fileName);

QString name = fifileName();

ui->label_filename->setText(name);

//QT 文件信息 将路径(fileName) 存储在 fi中, 然后 获取到fi里面的文件名称

//在这里,fifileName() 中的fileName并不是路径,而是路径中 所在的文件信息

//比如 fileName= "C:/Users/power/Pictures/0jpg" 那么『name』就是 0jpg

//之后赋值给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』的名字, 名字为选择的文件名,比如: 0jpg

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

​ 效果图:

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

32 个性化窗口

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

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

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

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

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

RC_ICONS = images/logoico

1

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

33 默认选中单选框

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

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

34 预览

​ 同上,选择『预览』,右键 转到槽 『仍然是点击事件』,之后在『apph』中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(!fileNameisEmpty()){ //判断文件名是否为空

QPixmap map(fileName);

QPixmap newMap = mapscaled(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 代表 是否选中当前的元素

​ 总而言之,就是我选择其中一个按钮,然后根据自己设置的大小,设置你所展示的大小,比如:

1、一个简单的显示程序(以下仅是部分程序段,相信大家会看明白)

QPixmap pixmap( "imagejpg" ); //imagejpg在程序的当前目录下。

PixmapLabel1->setPixmap(pixmap); //PixmapLabel1标签即可显示。

2、将QImage转换为QPixmap

QString fileName = QFileDialog::getOpenFileName(this,

tr("Open File"), QDir::currentPath());

if (!fileNameisEmpty())

{

QImage image(fileName); //定义QImage类。

if (imageisNull()) {

QMessageBox::information(this, tr("Image Viewer"),

tr("Cannot load %1")arg(fileName));

return;

}

uilabel->setPixmap(QPixmap::fromImage(image)); 将QImage转换为QPixmap。

}

3、QImage的加载的方法(个人现只懂两种)

(1)、QImage image(fileName); //直接在QImage类的构造函数搞定,fileName是指应用程序的当前目录,相信大家能理解这里所说的当前目录。

(2)、 QImage image;

imageload(fileName); //使用了load方法。

从imgpixel返回的数量实际上是一个QRgb值是格式独立的价值。然后,您可以将其转换成适当的声明,例如:import sys

from PyQt4QtGui import QPixmap, QApplication, QColor

app = QApplication(sysargv)

# img is QImage type

img = QPixmapgrabWindow(

QApplicationdesktop()winId(),

x=00,

y=100,

height=20,

width=20,

)toImage()

for x in range(0,20):

for y in range(0,20):

c = imgpixel(x,y)

colors = QColor(c)getRgbF()

print "(%s,%s) = %s" % (x, y, colors)

yield(0,0) = (060784313725490191, 06588235294117647, 070980392156862748, 10)

(0,1) = (060784313725490191, 06588235294117647, 070980392156862748, 10)

(0,2) = (061176470588235299, 06588235294117647, 071372549019607845, 10)

(0,3) = (061176470588235299, 066274509803921566, 071372549019607845, 10)

QImage的文档: 一个像素的颜色可以通过传递其坐标被检索 像素()函数。像素()函数返回的颜色作为QRgb 图像的格式的值上独立。

对的QRgb返回值由QImagepixel既可以直接提取,或者通过QColor对象:>>> from PyQt4 import QtGui

>>> rgb = 4285163107

>>> QtGuiqRed(rgb), QtGuiqGreen(rgb), QtGuiqBlue(rgb)

(106, 102, 99)

>>> QtGuiQColor(rgb)getRgb()[:-1]

(106, 102, 99)

QDir::setSearchPaths("icons", QStringList(QDir::homePath())); //设置搜索路径备选

QDir::addSearchPath ("icons", QString(QDir::homePath())+"/images"); //增加备选

QPixmap pixmap("icons:ssspng"); //搜索指定

newlabel->setPixmap(pixmap);

在makefile的构造函数里这么写

QPixmap pixmap("E:\\making\\background\\sonicojpg");这个路径写自己的

QPalette palette=this->palette();

palettesetBrush(QPalette::Background,QBrush(pixmap));

this->setPalette(palette);

使用stylesheet的时候要让其余的控件不继承这个规则详细做法请查看 qss 规则

如果比较小的话,可以在qrc文件里面添加的路径和别名

<RCC>

<qresource prefix="/image">

<file alias="check_f">image/Check_fpng</file>

</qresource>

</RCC>

我这个,路径是image/Check_fpng,别名是check_f

qt会自动将这些编译成2进制文件,和exe一起

调用时,QLabel l = new QLabel(this);

l->setPixmap(QPixmap(":/image/check_f"));

即可

Qt上处理使用QPixmap和QImage时最多了,不过既然谈到了,我们把其他几个处理类也说一下:

QBitmap只是一个继承于QPixmap的简单类,它可以确保深度为1。

QBitmap是QPixmap的子类,提供单色图像,可以用来制作游标(QCursor)或者笔刷(QBrush)。

以上就是关于qt实现多张图片的切换不使用ui控件全部的内容,包括:qt实现多张图片的切换不使用ui控件、QT 如何对图片进行 *** 作、如何获得的QPixmap或QImage的像素的RGB值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9618096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存