qt实现多张图片的切换不使用ui控件
发布网友
发布时间:2022-12-17 01:32
我来回答
共1个回答
热心网友
时间:2023-09-12 21:22
通过上方控件中,寻找所适合的控件,之后将其拖拽到自己合适的位置上:
具体布局如下图所示:
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代表 是否选中当前的元素
总而言之,就是我选择其中一个按钮,然后根据自己设置的图片大小,设置你所展示的图片大小,比如: