Qt實(shí)現(xiàn)圖形裁減
更新時(shí)間:2022年06月14日 16:20:29 作者:蝦球xz
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)圖形裁減,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Qt實(shí)現(xiàn)圖形裁減的具體代碼,供大家參考,具體內(nèi)容如下
main.cpp
#include <QApplication>
#include <QGraphicsItemGroup>
#include <QGraphicsView>
#include <QPushButton>
#include <QVBoxLayout>
class GraphicsItemGroup : public QGraphicsItemGroup
{
public:
? ? GraphicsItemGroup(QGraphicsItem *parent = 0) : QGraphicsItemGroup(parent)
? ? {
? ? ? ? setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
? ? }
? ? QPainterPath shape() const
? ? {
? ? ? ? if (mShape.isEmpty())
? ? ? ? ? ? return QGraphicsItemGroup::shape();
? ? ? ? return mShape;
? ? }
? ? void setShape(const QPainterPath &shape)
? ? {
? ? ? ? mShape = shape;
? ? ? ? update();
? ? }
private:
? ? QPainterPath mShape;
};
int main(int argc, char *argv[])
{
? ? QApplication a(argc, argv);
? ? QWidget w;
? ? w.setLayout(new QVBoxLayout);
? ? QGraphicsView view;
? ? QPushButton button("click me");
? ? w.layout()->addWidget(&view);
? ? w.layout()->addWidget(&button);
? ? view.setScene(new QGraphicsScene);
? ? GraphicsItemGroup group;
? ? view.scene()->addItem(&group);
? ? auto ellipse = new QGraphicsEllipseItem(QRectF(0, 0, 100, 100));
? ? ellipse->setBrush(Qt::red);
? ? auto rect = new QGraphicsRectItem(QRect(150, 150, 100, 100));
? ? rect->setBrush(Qt::blue);
? ? group.addToGroup(ellipse);
? ? group.addToGroup(rect);
? ? QObject::connect(&button, &QPushButton::clicked, [&group]()
? ? {
? ? ? ? QPainterPath shape;
? ? ? ? if (group.shape().boundingRect() == group.boundingRect())
? ? ? ? {
? ? ? ? ? ? shape.addRect(0, 50, 250, 150);
? ? ? ? }
? ? ? ? group.setShape(shape);
? ? });
? ? w.show();
? ? return a.exec();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++數(shù)據(jù)序列化方式(自定義結(jié)構(gòu)體的保存和讀取)
這篇文章主要介紹了C++數(shù)據(jù)序列化方式(自定義結(jié)構(gòu)體的保存和讀取),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
使用單鏈表實(shí)現(xiàn)多項(xiàng)式計(jì)算示例
這篇文章主要介紹了使用單鏈表實(shí)現(xiàn)多項(xiàng)式計(jì)算示例,需要的朋友可以參考下2014-03-03
MongoDB?C?驅(qū)動(dòng)程序安裝(libmongoc)?和?BSON?庫(kù)(libbson)方法
這篇文章主要介紹了安裝?MongoDB?C?驅(qū)動(dòng)程序?(libmongoc)?和?BSON?庫(kù)?(libbson),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
用C++實(shí)現(xiàn)一個(gè)命令行進(jìn)度條的示例代碼
這篇文章主要介紹了用C++實(shí)現(xiàn)一個(gè)命令行進(jìn)度條的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

