• Qt小项目2 图片查看器


    头文件:

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include //文件对话框
    9. #include
    10. class Widget : public QWidget
    11. {
    12. Q_OBJECT
    13. public:
    14. Widget(QWidget *parent = 0);
    15. ~Widget();
    16. private slots:
    17. void down_pic();
    18. void up_pic();
    19. void open_pic();
    20. private:
    21. QPushButton *pb_open,*pb_prior,*pb_next;
    22. QLabel *l;
    23. QStringList filenames;
    24. int pos;
    25. };
    26. #endif // WIDGET_H

    cpp文件;

    1. #include "widget.h"
    2. Widget::Widget(QWidget *parent)
    3. : QWidget(parent)
    4. {
    5. l = new QLabel("showpic");
    6. l->setFixedSize(640,480);
    7. l->setScaledContents(true); //自适应
    8. l->setAlignment(Qt::AlignCenter);//居中对齐
    9. pb_open = new QPushButton;//("open");//加了图片就不用标题了
    10. pb_prior = new QPushButton;//("Prior");
    11. pb_next = new QPushButton;//("Next");
    12. pb_open->setFixedSize(50,50);
    13. pb_next->setFixedSize(50,50); //设置按钮大小
    14. pb_prior->setFixedSize(50,50);
    15. pb_open->setIcon(QIcon(":/pic/回调函数.png"));//给按钮加上图标
    16. pb_open->setIconSize(pb_open->size());//设置图标大小
    17. pb_open->setFlat(true); //设置按钮的透明
    18. pb_next->setIcon(QIcon(":/pic/封包拆包.png"));
    19. pb_next->setIconSize(pb_next->size());//设置图标大小
    20. pb_next->setFlat(true); //设置按钮的透明
    21. pb_prior->setIcon(QIcon(":/pic/软件.png"));
    22. pb_prior->setIconSize(pb_prior->size());//设置图标大小
    23. pb_prior->setFlat(true); //设置按钮的透明
    24. pb_prior->setEnabled(false);//先使左右键失能,打开图片后再使能
    25. pb_next->setEnabled(false);
    26. QHBoxLayout *hbox = new QHBoxLayout;
    27. hbox->addStretch();//设置弹簧
    28. hbox->addWidget(pb_prior);
    29. hbox->addWidget(pb_open);
    30. hbox->addWidget(pb_next);
    31. hbox->addStretch(); //设置弹簧,使按键靠中间,较好看
    32. QVBoxLayout *vbox = new QVBoxLayout;
    33. vbox->addWidget(l);
    34. vbox->addLayout(hbox);
    35. setLayout(vbox);
    36. connect(pb_prior,SIGNAL(clicked(bool)),this,SLOT(up_pic()));
    37. connect(pb_open,SIGNAL(clicked(bool)),this,SLOT(open_pic()));
    38. connect(pb_next,SIGNAL(clicked(bool)),this,SLOT(down_pic()));
    39. }
    40. Widget::~Widget()
    41. {
    42. }
    43. void Widget::down_pic()
    44. {
    45. if(pos==filenames.length()-1)//循环显示
    46. pos=0;
    47. else
    48. pos++;
    49. l->setPixmap(QPixmap(filenames.at(pos)));
    50. }
    51. void Widget::up_pic()
    52. {
    53. if(pos==0) //循环显示
    54. pos=filenames.length()-1;
    55. else
    56. pos--;
    57. l->setPixmap(QPixmap(filenames.at(pos)));
    58. }
    59. void Widget::open_pic()
    60. {
    61. QStringList names = QFileDialog::getOpenFileNames(this,"打开图片",".","Images(*.png *.jpg *.bmp)");
    62. if(names.isEmpty())//没打开图片
    63. return;
    64. filenames = names;//第二次没打开,还可以查看上一次打开的图片
    65. pos=0;
    66. l->setPixmap(QPixmap(filenames.at(pos)));
    67. pb_prior->setEnabled(true);
    68. pb_next->setEnabled(true);
    69. }

     

  • 相关阅读:
    2023年贵州省职业院校技能大赛高职组信息安全管理与评估竞赛试题
    使用java实现快速排序算法的性能测试
    线性代数学习笔记9-3:相似矩阵、对角矩阵是特殊的相似矩阵、若尔当标准型Jordan form
    C#复杂XML反序列化为实体对象两种方式
    『Java安全』XStream 1.4.13反序列化漏洞CVE-2020-26217复现与浅析
    如何记账 分享记账的作用
    微信小程序--自定义组件(超详细 从新建到使用)
    网页JS自动化脚本(六)在特定位置添加元素
    剑指 Offer 61. 扑克牌中的顺子
    HuTool 使用教程
  • 原文地址:https://blog.csdn.net/qq_57018268/article/details/126788528