Qt實現讀取影象並且視窗加滑動條,點選影象在滑鼠點選處繪製小影象
最近有點忙,在拿Qt編一個軟體,其中有一小部分對影象進行處理的工作,自己通過查資料,寫了一個小例子,這個小例子可以實現讀取影象,給影象視窗新增滑動條,並且在影象上點選滑鼠,可以在滑鼠點選處加入一個小的影象。
廢話不多說。直接上原始碼:
main.cpp:
#include "labeltest.h" #include <QtWidgets/QApplication> #include <QScrollArea> int main(int argc, char *argv[]) { QApplication a(argc, argv); LabelTest w; return a.exec(); }
ImageLabel.cpp:
#include "ImageLabel.h" ImageLabel::ImageLabel( QWidget *parent /*= 0*/, Qt::WindowFlags f /*= 0*/ ) :QLabel(parent) { setMouseTracking(true); BackgroundPixmap.load("20130716203114.jpg"); this->setPixmap(BackgroundPixmap); this->setMinimumSize(600,400); scrollArea = new QScrollArea(); scrollArea->setWindowTitle("QScrollArea"); scrollArea->setWidgetResizable(true); scrollArea->setMaximumSize(600,600); //scrollArea->setMinimumSize(600,600); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea->setWidget(this); scrollArea->show(); SmallPixmap = QPixmap(50,50); SmallPixmap.fill(QColor(255,255,255)); x = -1; y = -1; } ImageLabel::~ImageLabel() { } void ImageLabel::mousePressEvent( QMouseEvent *evt ) { x = evt->x(); y = evt->y(); update(); } void ImageLabel::mouseMoveEvent( QMouseEvent *ev ) { } void ImageLabel::paintEvent(QPaintEvent *ev) { QPainter painter(this); painter.drawPixmap(0, 0, BackgroundPixmap); painter.drawPixmap(x, y, SmallPixmap); }
ImageLabel.h:
#ifndef _IMAHE_LABEL_H_
#define _IMAHE_LABEL_H_ #include <QtWidgets/QWidget> #include <QtWidgets/QLabel> #include <QtWidgets/QScrollArea> #include <QPainter> #include <QMouseEvent> class ImageLabel : public QLabel { public: explicit ImageLabel(QWidget *parent = 0, Qt::WindowFlags f = 0); virtual ~ImageLabel(); protected: virtual void mousePressEvent(QMouseEvent *evt); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void paintEvent(QPaintEvent *ev); private: QScrollArea *scrollArea; QPixmap BackgroundPixmap; QPixmap SmallPixmap; int x, y; }; #endif//_IMAHE_LABEL_H_
Labeltest.h:
#ifndef LABELTEST_H
#define LABELTEST_H
#include <QtWidgets/QMainWindow>
#include "ui_labeltest.h"
class LabelTest : public QMainWindow
{
Q_OBJECT
public:
LabelTest(QWidget *parent = 0);
~LabelTest();
private:
Ui::LabelTestClass ui;
};
#endif // LABELTEST_H
Labeltest.cpp:
#include "labeltest.h"
#include "ImageLabel.h"
LabelTest::LabelTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
ImageLabel *imageLabel = new ImageLabel(this);
}
LabelTest::~LabelTest()
{
}
最後的效果就是:
感覺Qt關於影象處理方面的東西還是有點少,這個工程貼出來,希望對大家有所幫助吧~
相關推薦
Qt實現讀取影象並且視窗加滑動條,點選影象在滑鼠點選處繪製小影象
最近有點忙,在拿Qt編一個軟體,其中有一小部分對影象進行處理的工作,自己通過查資料,寫了一個小例子,這個小例子可以實現讀取影象,給影象視窗新增滑動條,並且在影象上點選滑鼠,可以在滑鼠點選處加入一個小的影象。 廢話不多說。直接上原始碼: main.cpp: #include
QT 實現 讀取 增加 刪除 實時操作xml
include "operatexml.h" include OperateXml::OperateXml(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); readXML(); load(); connect(ui.pushBut
QML實現的無邊框視窗的拉伸,拖拽,基本解決閃爍嚴重問題
使用qt製作的無邊框視窗,只需在其flag中加入FramelessWindowHint。然而,無邊框視窗意味著,無法使用原有的邊框拉伸,拖拽功能。在qwidget中,有很多實現的方法,比如重寫 + mouseMoveEvent(QMouseEvent *event)
Qt實現遍歷資料夾和檔案目錄,並過濾和獲取檔案資訊、字尾名、字首名(三)
下面是自己的實際工作中寫的程式碼,請大家斧正#ifndefINQUIRYDIALOG_H#defineINQUIRYDIALOG_H#include<QDialog>#include<QFileDialog>#include<QDir>#i
Java OpenCV開發——使用JavaCV在視窗顯示影象,並監聽滑鼠點選事件
在Eclipse下使用OpenCV開發過程中,需要在彈出視窗中顯示影象,並能監聽滑鼠點選事件。但網上一般都是用JLabel顯示圖片,再新增到JFrame上;但JLabel不對輸入事件作出反應,無法實現需求。 為此我查遍資料,發現在JavaCV中
Qt實現炫酷啟動圖-動態進度條
spl tle ner 也有 喜歡 top evel 註意 有一種 目錄 一、簡述 二、動效進度條 1、光效進度條 2、延遲到達進度條 3、接口說明
Android自定義Seekbar滑動條,Pop提示跟隨滑動按鈕一起滑動
由於專案需要做出此效果,自定義寫了一個。 效果圖 思路: 原始的seekbar只有滑動條並沒有下方的提示文字,所以我們必須要繼承Seekbar重寫這個控制元件。 程式碼: 在values資料夾下新建attrs.xml,用於設定跟隨滑動按鈕的文字大小,顏色,背景。
opencv+QT實現影象操作(影象的與、或、異或、取反、兩影象相減、RGB轉YUV、YUV轉RG等等)
需求簡介: 由於最近在做影象處理的專案,有時候需要快速的知道影象的最大畫素值和最小畫素值是多少,或者影象的最大最小畫素的座標在哪裡。需要快速的得到RGB影象中的R、G、B當中的某個通道。需要把RGB影象轉成YUV資料儲存。需要把YUV資料轉成RGB圖片儲存。當每次需要用到這
CefSharp.v49.0.1瀏覽器控制元件完全WPF版,實現禁止彈出新視窗,在同一視窗開啟連結,並且支援帶type="POST" target="_blank"的連結
需求場景:在查詢頁面,填寫查詢條件,查詢條件包括上傳的圖片,根據圖片的特徵查詢,這就需要在提交的時候,使用POST提交,因為GET提交無法提交圖片資料,提交查詢條件之後,在新的視窗展示查詢結果。(當然查詢結果頁面可能不支援F5重新整理頁面) 表單HTML程式碼示意(注意metho
Android中應用TabLayout實現頂部Tab小選單加滑動效果
TabLayout控制元件是2015年google大會上,google釋出了新的Android Support Design庫,裡面包含了幾個新的控制元件,其中就有一個TabLayout,它就可以完成TabPageIndicator的效果,而且還是官方的,最好的是它可以相容
影象處理之qt實現
#include \"mainwindow.h\" #include \"ui_mainwindow.h\" #include <QFileDialog> #include <QMovie> #include <QRgb> #include <math.
Qt實現視窗的無邊框化且可拉伸大小
簡述 大家在做Qt的時候,經常都會遇到自定義QWidget吧,但一旦實現後,有變的不可以拉伸了,今天我們就來做一個可拉伸的自定義QWidget並且可以移動 實現 #ifndef AUTOSIZEWIDGET_H #define AUTOSIZEWIDG
QT操控excel1:如何實現讀取excel檔案的任意一行一列的值
首先要告訴大家的是這個事非常簡單,不需大家自己去安裝各種包啥的了。 只需要安裝了QT就行,然後在pro檔案裡面加上一行 CONFIG+=qaxcontainer 接著我們在MainWindow.c
Qt實現二值細胞影象區域上色
問題描述 在細胞影象處理和識別中,區域特徵是非常重要的,也是分析細胞特徵的前提和基礎。這些區域特徵可以是外接矩形、畫素點個數等。因此,我們需要得到跟蹤得到不同區域,才能對其進行特徵分析。針對該問題,我們需要設計一個類和相關方法,用於跟蹤得到每個區域,並填上不同
Java 實現按行讀取檔案並且將行中的重複資料刪除
package com.gaden.delerepeat; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStr
轉:QT實現陰影視窗(三)
上一篇講到了實現用拖動視窗,這篇分享一下實現最大化,最小化視窗。 一般的視窗都有最大化最小化功能,在WINDOWS系統下,在視窗右上角有相應的按鈕,而在MAC系統,相應的按鈕是在左上角的。現在我們的視窗是沒有最小化最小化和關閉按鈕的,要關閉視窗只能用Alt + F
Qt佈局管理: 分割視窗QSplitter類講解(純程式碼實現分割視窗)
一個QSplitter是一個可以包含其他控制元件的控制元件,這些控制元件被一個分隔條隔開,託拽這個分隔條,可以改變splitter的子控制元件的大小。 QSplitter控制元件經常做為佈局管理器使用
Qt 實現 QQ 9.0 新版登入視窗
簡述 QQ的介面又進行了一波更新,登入介面的樣式換了一種全新的效果。一直很喜歡QQ的介面,所以進行了一波模仿。 點選登入,登入成功之後,右側會出現一條伸出的豎線,然後視窗會自動向右移動直到視窗完全隱藏,然後豎線再進行收縮,總共三個連續動畫效果,下面是效果圖。有興
Qt佈局管理: 停靠視窗QDockWidget類(純程式碼實現)
(注:以下解釋是我自己的翻譯,由於英文水平有限,望海涵) 詳細描述: QDockWidget類提供了一個窗體部件,其可以停靠在QMainWindow,或其本身作為一個在桌面上的頂級視窗(也就是父窗體
qt基於qstackedwidget的同一視窗介面變換實現
想要實現點選文字,直線,時間三個按鈕,對話方塊介面部分同一位置發生變化,變為相應的引數選擇。剛開始使用的hide(),show(),後來發現由於棧的原因,三個部分由於位置重疊,有前後之分,所以只能調節一個,其他部分不能調節,雖然可以看到。嘗試用lower(),raise()也