diff options
Diffstat (limited to 'src/designer/src/components/taskmenu')
3 files changed, 58 insertions, 15 deletions
diff --git a/src/designer/src/components/taskmenu/itemlisteditor.cpp b/src/designer/src/components/taskmenu/itemlisteditor.cpp index 8aca0916d..700cf136c 100644 --- a/src/designer/src/components/taskmenu/itemlisteditor.cpp +++ b/src/designer/src/components/taskmenu/itemlisteditor.cpp @@ -116,12 +116,17 @@ static QStringList c2qStringList(const char * const in[]) return out; } -void AbstractItemEditor::setupProperties(PropertyDefinition *propList) +void AbstractItemEditor::setupProperties(const PropertyDefinition *propList, + Qt::Alignment alignDefault) { for (int i = 0; propList[i].name; i++) { int type = propList[i].typeFunc ? propList[i].typeFunc() : propList[i].type; int role = propList[i].role; QtVariantProperty *prop = m_propertyManager->addProperty(type, QLatin1String(propList[i].name)); + if (role == Qt::TextAlignmentRole) { + prop->setAttribute(DesignerPropertyManager::alignDefaultAttribute(), + QVariant(uint(alignDefault))); + } Q_ASSERT(prop); if (role == Qt::ToolTipPropertyRole || role == Qt::WhatsThisPropertyRole) prop->setAttribute(QStringLiteral("validationMode"), ValidationRichText); @@ -148,9 +153,11 @@ void AbstractItemEditor::setupObject(QWidget *object) m_editorFactory->setFormWindowBase(fwb); } -void AbstractItemEditor::setupEditor(QWidget *object, PropertyDefinition *propList) +void AbstractItemEditor::setupEditor(QWidget *object, + const PropertyDefinition *propList, + Qt::Alignment alignDefault) { - setupProperties(propList); + setupProperties(propList, alignDefault); setupObject(object); } @@ -208,6 +215,9 @@ void AbstractItemEditor::resetProperty(QtProperty *property) if (m_propertyManager->resetIconSubProperty(property)) return; + if (m_propertyManager->resetTextAlignmentProperty(property)) + return; + BoolBlocker block(m_updatingBrowser); QtVariantProperty *prop = m_propertyManager->variantProperty(property); @@ -243,15 +253,18 @@ void AbstractItemEditor::updateBrowser() for (QtVariantProperty *prop : qAsConst(m_properties)) { int role = m_propertyToRole.value(prop); QVariant val = getItemData(role); + + bool modified = false; if (!val.isValid()) { if (role == ItemFlagsShadowRole) val = QVariant::fromValue(defaultItemFlags()); else val = QVariant(int(prop->value().userType()), nullptr); - prop->setModified(false); } else { - prop->setModified(true); + modified = role != Qt::TextAlignmentRole + || val.toUInt() != DesignerPropertyManager::alignDefault(prop); } + prop->setModified(modified); prop->setValue(val); } @@ -296,9 +309,11 @@ ItemListEditor::ItemListEditor(QDesignerFormWindowInterface *form, QWidget *pare connect(iconCache(), &DesignerIconCache::reloaded, this, &AbstractItemEditor::cacheReloaded); } -void ItemListEditor::setupEditor(QWidget *object, PropertyDefinition *propList) +void ItemListEditor::setupEditor(QWidget *object, + const PropertyDefinition *propList, + Qt::Alignment alignDefault) { - AbstractItemEditor::setupEditor(object, propList); + AbstractItemEditor::setupEditor(object, propList, alignDefault); if (ui.listWidget->count() > 0) ui.listWidget->setCurrentRow(0); @@ -319,6 +334,8 @@ void ItemListEditor::on_newListItemButton_clicked() QListWidgetItem *item = new QListWidgetItem(m_newItemText); item->setData(Qt::DisplayPropertyRole, QVariant::fromValue(PropertySheetStringValue(m_newItemText))); + if (m_alignDefault != 0) + item->setTextAlignment(Qt::Alignment(m_alignDefault)); item->setFlags(item->flags() | Qt::ItemIsEditable); if (row < ui.listWidget->count()) ui.listWidget->insertItem(row, item); @@ -466,6 +483,16 @@ void ItemListEditor::updateEditor() else m_propertyBrowser->clear(); } + +uint ItemListEditor::alignDefault() const +{ + return m_alignDefault; +} + +void ItemListEditor::setAlignDefault(uint newAlignDefault) +{ + m_alignDefault = newAlignDefault; +} } // namespace qdesigner_internal QT_END_NAMESPACE diff --git a/src/designer/src/components/taskmenu/itemlisteditor.h b/src/designer/src/components/taskmenu/itemlisteditor.h index 97bcb19d9..c7dee8764 100644 --- a/src/designer/src/components/taskmenu/itemlisteditor.h +++ b/src/designer/src/components/taskmenu/itemlisteditor.h @@ -86,9 +86,11 @@ private slots: protected: virtual int defaultItemFlags() const = 0; - void setupProperties(PropertyDefinition *propDefs); + void setupProperties(const PropertyDefinition *propList, + Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter); void setupObject(QWidget *object); - void setupEditor(QWidget *object, PropertyDefinition *propDefs); + void setupEditor(QWidget *object, const PropertyDefinition *propDefs, + Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter); void injectPropertyBrowser(QWidget *parent, QWidget *widget); void updateBrowser(); virtual void setItemData(int role, const QVariant &v) = 0; @@ -112,12 +114,16 @@ class ItemListEditor: public AbstractItemEditor public: explicit ItemListEditor(QDesignerFormWindowInterface *form, QWidget *parent); - void setupEditor(QWidget *object, PropertyDefinition *propDefs); + void setupEditor(QWidget *object, const PropertyDefinition *propDefs, + Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter); QListWidget *listWidget() const { return ui.listWidget; } void setNewItemText(const QString &tpl) { m_newItemText = tpl; } QString newItemText() const { return m_newItemText; } void setCurrentIndex(int idx); + uint alignDefault() const; + void setAlignDefault(uint newAlignDefault); + signals: void indexChanged(int idx); void itemChanged(int idx, int role, const QVariant &v); @@ -145,6 +151,7 @@ private: void setPropertyBrowserVisible(bool v); void updateEditor(); Ui::ItemListEditor ui; + uint m_alignDefault = 0; bool m_updating; QString m_newItemText; }; diff --git a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp index b5f41626c..6bf6d9faa 100644 --- a/src/designer/src/components/taskmenu/tablewidgeteditor.cpp +++ b/src/designer/src/components/taskmenu/tablewidgeteditor.cpp @@ -51,6 +51,7 @@ TableWidgetEditor::TableWidgetEditor(QDesignerFormWindowInterface *form, QDialog { m_columnEditor = new ItemListEditor(form, this); m_columnEditor->setObjectName(QStringLiteral("columnEditor")); + m_columnEditor->setAlignDefault(Qt::AlignCenter); m_columnEditor->setNewItemText(tr("New Column")); m_rowEditor = new ItemListEditor(form, this); m_rowEditor->setObjectName(QStringLiteral("rowEditor")); @@ -136,11 +137,19 @@ TableWidgetContents TableWidgetEditor::fillContentsFromTableWidget(QTableWidget tblCont.fromTableWidget(tableWidget, false); tblCont.applyToTableWidget(ui.tableWidget, iconCache(), true); - tblCont.m_verticalHeader.applyToListWidget(m_rowEditor->listWidget(), iconCache(), true); - m_rowEditor->setupEditor(tableWidget, tableHeaderPropList); - - tblCont.m_horizontalHeader.applyToListWidget(m_columnEditor->listWidget(), iconCache(), true); - m_columnEditor->setupEditor(tableWidget, tableHeaderPropList); + auto *header = tableWidget->verticalHeader(); + auto headerAlignment = header != nullptr + ? header->defaultAlignment() : Qt::Alignment(Qt::AlignLeading | Qt::AlignVCenter); + tblCont.m_verticalHeader.applyToListWidget(m_rowEditor->listWidget(), iconCache(), + true, headerAlignment); + m_rowEditor->setupEditor(tableWidget, tableHeaderPropList, headerAlignment); + + header = tableWidget->horizontalHeader(); + headerAlignment = header != nullptr + ? header->defaultAlignment() : Qt::Alignment(Qt::AlignCenter); + tblCont.m_horizontalHeader.applyToListWidget(m_columnEditor->listWidget(), iconCache(), + true, headerAlignment); + m_columnEditor->setupEditor(tableWidget, tableHeaderPropList, headerAlignment); setupEditor(tableWidget, tableItemPropList); if (ui.tableWidget->columnCount() > 0 && ui.tableWidget->rowCount() > 0) |