New custom TextInput widget (derived from QLineEdit) to use for text input fields. It currently just removes the default (theme-based) icons from context menu actions

This commit is contained in:
Nav
2021-12-19 18:30:41 +00:00
parent cb5afddd0f
commit a923c18403
7 changed files with 56 additions and 6 deletions

View File

@@ -140,6 +140,7 @@ add_executable(Bloom
src/Insight/UserInterfaces/InsightWindow/Widgets/PanelWidget.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/RotatableLabel.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/LabeledSeparator.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/TextInput.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/SvgWidget.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/SvgToolButton.cpp
src/Insight/UserInterfaces/InsightWindow/Widgets/ClickableWidget.cpp

View File

@@ -6,6 +6,7 @@
#include "Widgets/PanelWidget.hpp"
#include "Widgets/RotatableLabel.hpp"
#include "Widgets/LabeledSeparator.hpp"
#include "Widgets/TextInput.hpp"
#include "Widgets/SvgWidget.hpp"
#include "Widgets/SvgToolButton.hpp"
#include "Widgets/ExpandingHeightScrollAreaWidget.hpp"
@@ -43,6 +44,15 @@ UiLoader::UiLoader(QObject* parent): QUiLoader(parent) {
return widget;
}
},
{
"TextInput",
[this] (QWidget* parent, const QString& name) {
auto* widget = new TextInput(parent);
widget->setObjectName(name);
widget->setStyleSheet(parent->styleSheet());
return widget;
}
},
{
"ExpandingHeightScrollAreaWidget",
[this] (QWidget* parent, const QString& name) {

View File

@@ -123,7 +123,6 @@ TargetRegisterInspectorWindow::TargetRegisterInspectorWindow(
);
this->registerValueTextInput->setFixedWidth(BitsetWidget::WIDTH * 2);
this->registerValueTextInput->setContextMenuPolicy(Qt::NoContextMenu);
if (!this->registerDescriptor.writable) {
this->registerValueTextInput->setDisabled(true);

View File

@@ -70,7 +70,7 @@
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLineEdit" name="register-details-name-input">
<widget class="TextInput" name="register-details-name-input">
<property name="enabled">
<bool>false</bool>
</property>
@@ -94,7 +94,7 @@
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLineEdit" name="register-details-size-input">
<widget class="TextInput" name="register-details-size-input">
<property name="enabled">
<bool>false</bool>
</property>
@@ -118,7 +118,7 @@
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLineEdit" name="register-details-start-address-input">
<widget class="TextInput" name="register-details-start-address-input">
<property name="enabled">
<bool>false</bool>
</property>
@@ -157,7 +157,7 @@ Insight.</string>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLineEdit" name="register-value-text-input"/>
<widget class="TextInput" name="register-value-text-input"/>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QWidget" name="register-value-bitset-widget-container">

View File

@@ -94,7 +94,7 @@
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLineEdit" name="search-input">
<widget class="TextInput" name="search-input">
<property name="minimumHeight">
<number>25</number>
</property>

View File

@@ -0,0 +1,21 @@
#include "TextInput.hpp"
#include <QMenu>
#include <QAction>
using namespace Bloom::Widgets;
TextInput::TextInput(QWidget* parent): QLineEdit(parent) {}
void TextInput::contextMenuEvent(QContextMenuEvent* event) {
if (QMenu *menu = createStandardContextMenu()) {
menu->setAttribute(Qt::WA_DeleteOnClose);
// Remove default icons
for (auto& action : menu->actions()) {
action->setIcon(QIcon());
}
menu->popup(event->globalPos());
}
}

View File

@@ -0,0 +1,19 @@
#pragma once
#include <QLineEdit>
#include <QContextMenuEvent>
namespace Bloom::Widgets
{
class TextInput: public QLineEdit
{
Q_OBJECT
public:
explicit TextInput(QWidget* parent = nullptr);
protected:
void contextMenuEvent(QContextMenuEvent* event) override;
};
}