Слой Photoshop, такой как QTreeWidget Qt6 C++ – Нужна помощь ⇐ C++
Слой Photoshop, такой как QTreeWidget Qt6 C++ – Нужна помощь
Я хотел создать слой в фотошопе, похожий на систему, но пока я все еще учусь, мне трудно. Сначала я попробовал использовать делегата, но, застряв, переключился на объявление элементов управления напрямую в элементе.
Чего я хочу: Один слой должен состоять из [Значок, LineEdit, Флажок]. Каждый слой должен иметь высоту 40 пикселей, должен подсвечиваться при наведении курсора и быть группируемым (возможность размещения в качестве дочернего виджета другого, как со слоями в фотошопе). Вот изображение того, как должны выглядеть такие слои: [Вот как это должно выглядеть (нажмите здесь...)][1]
Также вот ссылка на сообщение, которое я нашел о выделении строк QTableView. Это то, что я хочу для своего QTreeView, но я не могу перевести его в мои пользовательские элементы управления: https://evileg.com/en/post/624/
На данный момент я создал собственный подкласс QWidget, который установил для своего QTreeWidgetItem для достижения этого макета. Однако наведение не работает должным образом, и пользовательские элементы управления теряются при перетаскивании моего пользовательского виджета под другой QTreeWidgetItem (группировка).
Вот мой Cutomwidget.cpp:
#include "ViewLayerCustomItem.h" #include #include #include #include #include #include #include #include ViewLayerCustomItem::ViewLayerCustomItem(QWidget *parent) : QWidget(родительский) { // Erstellen Sie ein Layout для определенных виджетов. QHBoxLayout* макет = новый QHBoxLayout(); QLabel* iconLabel = новый QLabel(); iconLabel->setPixmap(QPixmap("://resource/quick.png").scaled(32, 32, Qt::KeepAspectRatio)); макет->addWidget(iconLabel); QLineEdit* lineEdit = новый QLineEdit(); макет->addWidget(lineEdit); lineEdit->setReadOnly(false); lineEdit->setFrame (ложь); lineEdit->setPlaceholderText(""); QCheckBox* checkBox = новый QCheckBox(""); макет->addWidget(checkBox); setLayout (макет); } void ViewLayerCustomItem::enterEvent(QEnterEvent *event) { QString hoverStyle = "цвет фона: #E6F7FF; цвет: #000000;"; setStyleSheet(hoverStyle); } void ViewLayerCustomItem::leaveEvent(QEvent *event) { setStyleSheet(""); } А вот mytreewidget.cpp:
#include "ViewLayerList.h" #include #include #include #include #include "SignalManager.h" #include #include #include "ViewLayerCustomItem.h" ViewLayerList::ViewLayerList(CustomGraphicsScene *scene, QWidget *parent) : QTreeWidget{родительский}, Scene_durchgereicht(сцена) { это->setHeaderHidden(истина); это->setRootIsDecorated(истина); это->setFocusPolicy(Qt::NoFocus); QTreeWidgetItem* item = новый QTreeWidgetItem(this); ViewLayerCustomItem *customWidget = новый ViewLayerCustomItem(); this->setItemWidget(item, 0, customWidget); это->addTopLevelItem(пункт); QTreeWidgetItem *item2 = новый QTreeWidgetItem(это); это->addTopLevelItem(item2); this->setDragDropMode(QAbstractItemView::InternalMove); this->setSelectionMode(QAbstractItemView::ExtendedSelection); это->setDragEnabled(истина); это->setAcceptDrops(истина); это->setDropIndicatorShown(истина); } Спасибо всем, кто дает конструктивные и полезные ответы.
Я хотел создать слой в фотошопе, похожий на систему, но пока я все еще учусь, мне трудно. Сначала я попробовал использовать делегата, но, застряв, переключился на объявление элементов управления напрямую в элементе.
Чего я хочу: Один слой должен состоять из [Значок, LineEdit, Флажок]. Каждый слой должен иметь высоту 40 пикселей, должен подсвечиваться при наведении курсора и быть группируемым (возможность размещения в качестве дочернего виджета другого, как со слоями в фотошопе). Вот изображение того, как должны выглядеть такие слои: [Вот как это должно выглядеть (нажмите здесь...)][1]
Также вот ссылка на сообщение, которое я нашел о выделении строк QTableView. Это то, что я хочу для своего QTreeView, но я не могу перевести его в мои пользовательские элементы управления: https://evileg.com/en/post/624/
На данный момент я создал собственный подкласс QWidget, который установил для своего QTreeWidgetItem для достижения этого макета. Однако наведение не работает должным образом, и пользовательские элементы управления теряются при перетаскивании моего пользовательского виджета под другой QTreeWidgetItem (группировка).
Вот мой Cutomwidget.cpp:
#include "ViewLayerCustomItem.h" #include #include #include #include #include #include #include #include ViewLayerCustomItem::ViewLayerCustomItem(QWidget *parent) : QWidget(родительский) { // Erstellen Sie ein Layout для определенных виджетов. QHBoxLayout* макет = новый QHBoxLayout(); QLabel* iconLabel = новый QLabel(); iconLabel->setPixmap(QPixmap("://resource/quick.png").scaled(32, 32, Qt::KeepAspectRatio)); макет->addWidget(iconLabel); QLineEdit* lineEdit = новый QLineEdit(); макет->addWidget(lineEdit); lineEdit->setReadOnly(false); lineEdit->setFrame (ложь); lineEdit->setPlaceholderText(""); QCheckBox* checkBox = новый QCheckBox(""); макет->addWidget(checkBox); setLayout (макет); } void ViewLayerCustomItem::enterEvent(QEnterEvent *event) { QString hoverStyle = "цвет фона: #E6F7FF; цвет: #000000;"; setStyleSheet(hoverStyle); } void ViewLayerCustomItem::leaveEvent(QEvent *event) { setStyleSheet(""); } А вот mytreewidget.cpp:
#include "ViewLayerList.h" #include #include #include #include #include "SignalManager.h" #include #include #include "ViewLayerCustomItem.h" ViewLayerList::ViewLayerList(CustomGraphicsScene *scene, QWidget *parent) : QTreeWidget{родительский}, Scene_durchgereicht(сцена) { это->setHeaderHidden(истина); это->setRootIsDecorated(истина); это->setFocusPolicy(Qt::NoFocus); QTreeWidgetItem* item = новый QTreeWidgetItem(this); ViewLayerCustomItem *customWidget = новый ViewLayerCustomItem(); this->setItemWidget(item, 0, customWidget); это->addTopLevelItem(пункт); QTreeWidgetItem *item2 = новый QTreeWidgetItem(это); это->addTopLevelItem(item2); this->setDragDropMode(QAbstractItemView::InternalMove); this->setSelectionMode(QAbstractItemView::ExtendedSelection); это->setDragEnabled(истина); это->setAcceptDrops(истина); это->setDropIndicatorShown(истина); } Спасибо всем, кто дает конструктивные и полезные ответы.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Photoshop-python-api говорит, что, возможно, у меня неправильно установлен Photoshop
Anonymous » » в форуме Python - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как добавить редактируемый текстовый слой в файл Photoshop PSD с помощью Python
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как добавить редактируемый текстовый слой в файл Photoshop PSD с помощью Python
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как добавить редактируемый текстовый слой в файл Photoshop PSD с помощью Python
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как добавить редактируемый текстовый слой в файл Photoshop PSD с помощью Python
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-