通过上方控件中,寻找所适合的控件,之后将其拖拽到自己合适的位置上:
具体布局如下图所示:
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值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)