Подкласс Qstandarditem вместе с другим виджетом (Qlineedit или Qpushbutton)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Подкласс Qstandarditem вместе с другим виджетом (Qlineedit или Qpushbutton)

Сообщение Anonymous »

У меня есть кортеж с данными, подобные этим: Columntype (просто перечисление) и текст. Я хочу, например, подключиться к QStandardItem вместе с QlineEdit и составить список, в котором пользователь может изменить строки и изменить текст внутри этих рядов. />

#ifndef OUTPUTCOLUMN_H
#define OUTPUTCOLUMN_H

#include "output/output_options.h"
#include
#include

class OutputColumn : public QStandardItem, public QLineEdit
{
ColumnType type;
public:
OutputColumn(QString text, ColumnType type);

void set_column_type(ColumnType type);
ColumnType get_column_type();
};

#endif // OUTPUTCOLUMN_H
< /code>
Но это приводит к списку с элементом (я вижу, что есть элементы благодаря чередующимся цветам строк), но они пустые строки, и я не могу редактировать текст на них.
Существует реализация < /p>
#include "outputcolumn.h"

#include

OutputColumn::OutputColumn(QString text, ColumnType type)
: type(type) {
// QStandardItem::setText(text);
QLineEdit::setText(text);
// QVBoxLayout *layout = new QVBoxLayout(this);
// lineEdit = new QLineEdit(text);
// layout->addWidget(lineEdit);
// QWidget::setLayout(layout);
}

void OutputColumn::set_column_type(ColumnType type) { this->type = type; }

ColumnType OutputColumn::get_column_type() { return type; }

< /code>
Как видно из комментариев, я попытался сделать его подклассом qwidget с макетом, но я не могу редактировать этикетки (скорее всего, потому что я использовал qstandarditem :: settext (текст); чтобы установить текст, поэтому текст не ушел из qlineedit.). Возможно, это не самый способ выполнения такой задачи?#include "outputcolumnmodel.h"

#include

OutputColumnModel::OutputColumnModel(QObject *parent)
: QStandardItemModel{parent} { }

Qt::ItemFlags OutputColumnModel::flags (const QModelIndex & index) const {
Qt::ItemFlags defaultFlags = QStandardItemModel::flags(index);
if (index.isValid()){
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
}
return defaultFlags;
}
< /code>
Я сделал это таким образом из -за поведения функции перетаскивания по умолчанию, которая перезаписывала строку при определенных условиях при перемещении рядов. (Источник: https://www.walletfox.com/course/qtreorderablelist.php, второй вариант)


Подробнее здесь: https://stackoverflow.com/questions/796 ... pushbutton
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»