/* widget.h*/ #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QLabel> #include <QPushButton> #include <QMouseEvent> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); public slots: void lefebut(); void rightbut(); void openbut(); void showpic() { lab->setPixmap(QPixmap(files[len])); } signals: sendmesg();//发送信号 protected: void keyPressEvent(QKeyEvent *event); /* 键盘按键 */ void wheelEvent(QWheelEvent *event); /* 鼠标滚动 */ void mousePressEvent(QMouseEvent *event); private: QLabel *lab; QPushButton *btn_l, *btn_r,*btn_o; int len; QStringList files; }; #endif // WIDGET_H /* widget.cpp*/ #include "widget.h" #include <QVBoxLayout> #include <QHBoxLayout> #include <QFileDialog> /* 文件对话框*/ #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent) { setFixedSize(640, 480); btn_l = new QPushButton("<-",this); btn_o = new QPushButton("O",this); btn_r = new QPushButton("->",this); lab = new QLabel(this); lab->setScaledContents(true); QHBoxLayout *hbox = new QHBoxLayout; hbox->addStretch(); hbox->addWidget(btn_l); hbox->addWidget(btn_o); hbox->addWidget(btn_r); hbox->addStretch(); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(lab); vbox->addLayout(hbox); setLayout(vbox); connect(btn_o, SIGNAL(clicked()), this, SLOT(openbut())); connect(btn_r, SIGNAL(clicked()), this, SLOT(rightbut())); connect(btn_l, SIGNAL(clicked()), this, SLOT(lefebut())); connect(this, SIGNAL(sendmesg()), this, SLOT(showpic())); } Widget::~Widget() { } void Widget::mousePressEvent(QMouseEvent *event) { if (1 == event->button()) { if (0 == (len)) { len = files.length() - 1; lab->setPixmap(QPixmap(files[len])); } else { len--; lab->setPixmap(QPixmap(files[len])); } } else if (2 == event->button()) { if ((files.length() - 1) == (len)) { len = 0; lab->setPixmap(QPixmap(files[len])); } else { len++; lab->setPixmap(QPixmap(files[len])); } } emit sendmesg();//发送信号 } void Widget::keyPressEvent(QKeyEvent *event) /* 键盘按键 */ { if (Qt::Key_1 == event->key()) { if (0 == (len)) { len = files.length() - 1; lab->setPixmap(QPixmap(files[len])); } else { len--; lab->setPixmap(QPixmap(files[len])); } } else if (Qt::Key_2 == event->key()) { if ((files.length() - 1) == (len)) { len = 0; lab->setPixmap(QPixmap(files[len])); } else { len++; lab->setPixmap(QPixmap(files[len])); } } emit sendmesg();//发送信号 } void Widget::wheelEvent(QWheelEvent *event) /* 鼠标滚动 */ { if (-120 == event->delta()) { if (0 == (len)) { len = files.length() - 1; lab->setPixmap(QPixmap(files[len])); } else { len--; lab->setPixmap(QPixmap(files[len])); } } else if (120 == event->delta()) { if ((files.length() - 1) == (len)) { len = 0; lab->setPixmap(QPixmap(files[len])); } else { len++; lab->setPixmap(QPixmap(files[len])); } } emit sendmesg();//发送信号 } void Widget::lefebut() { if (0 == (len)) { len = files.length() - 1; lab->setPixmap(QPixmap(files[len])); } else { len--; lab->setPixmap(QPixmap(files[len])); } } void Widget::rightbut() { if ((files.length() - 1) == (len)) { len = 0; lab->setPixmap(QPixmap(files[len])); } else { len++; lab->setPixmap(QPixmap(files[len])); } } void Widget::openbut() { files = QFileDialog::getOpenFileNames(this, "Open Image", ".","Images (*.png *.jpg *.xpm)"); len = 0; qDebug() << "---1---" <<len; lab->setScaledContents(true); lab->setPixmap(QPixmap(files[len])); } /* main.cpp*/ #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
图片浏览器
最新推荐文章于 2022-05-12 21:50:48 发布