• 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. }

     

  • 相关阅读:
    这些 git 高级命令你知道几个
    【Java 进阶篇】JDBC 管理事务详解
    C#/VB.NET 在PDF表格中添加条形码
    Kafka学习之:mac 上基础使用 python 来使用 kafka 的生产者和消费者进行数据处理
    java计算机毕业设计网上图书销售系统源码+系统+数据库+lw文档+mybatis+运行部署
    码住收藏 ▏软件测试报告应该包含哪些内容?
    自助式数据分析平台:JVS智能BI功能介绍(二)数据集管理
    C++开发过程中的笔记
    GIS工具maptalks开发手册(二)03——渲染面
    从零开始搭建oj(ubuntu)
  • 原文地址:https://blog.csdn.net/qq_57018268/article/details/126788528