Qt之QDesktopWidget
时间: 2018-09-18来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
1、新建QTgui,基类选择QWidget,取消创建界面,添加资源
2、widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QSlider> #include <QPixmap> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); QWidget *canvas; QSlider *slider; QPixmap pixmap; void paintEvent(QPaintEvent *); public slots: void setZoom(int); private: qreal zoom; qreal pixels; qreal px_width; qreal px_height; qreal mm_width; qreal mm_height; }; #endif // WIDGET_H
widget.cpp #include "widget.h" #include <QHBoxLayout> #include <QDesktopWidget> #include <QPainter> #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent) { this->resize(621, 375); QHBoxLayout *layout = new QHBoxLayout; canvas = new QWidget; slider = new QSlider; slider->setMinimum(0); slider->setMaximum(100); slider->setValue(50); layout->addWidget(canvas); layout->addWidget(slider); setLayout(layout); if(!pixmap.load(":/resources/fish.png")) { qDebug() << "Fatal error: Unable to load image"; exit(-1); } connect(slider, SIGNAL(valueChanged(int)), SLOT(setZoom(int))); } void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this); painter.scale(zoom, zoom); painter.drawPixmap(0, 0, pixmap); painter.end(); } void Widget::setZoom(int new_zoom) { zoom = (qreal)(50+new_zoom) / 50; pixels = pixmap.width() * zoom; // QDesktopWidget desk; // px_width = desk.width() / pixels; // px_height = desk.height() / pixels; // mm_width = px_width * 17.9; // mm_height = px_height * 17.9; qDebug() << "Zoom: " << zoom; // qDebug() << "desk.widthMM:" << desk.widthMM(); // qDebug() << "px_width: " << px_width; // qDebug() << "px_height: " << px_height; // qDebug() << "mm_width: " << mm_width; // qDebug() << "mm_height: " << mm_height; repaint(); repaint(); } Widget::~Widget() { }

---

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行