LINUX.ORG.RU

Разыскиваются Qt-виджеты специальные.


0

1

Посоветуйте место, где можно рыться в поисках спец. Qt-виджетов.

Интересует: http://download.oracle.com/docs/cd/E19080-01/n1.grid.eng6/817-3606/images/set...

Виджет установки параметров 4-х типов - string, bool, long, double. Или близкие. Bool - QCheckBox, long - QSpinBox, double - QDoubleSpinBox, string - QLineEdit.

С переносом этих параметров в переменные типа bool, long, double, std::string.

Может воспользоваться шаблонами и тупо кидать в QGridLayout требуемые виджеты по типу? А в программе хранить массив QWidget*.

cattail
()
Ответ на: комментарий от seed_stil

Я так понимаю ТС хочет виджет для ввода набора параметров 4-х типов, т.е. клиентский код должен выглядеть как-то так:

int a;
bool b;
QString c;
VariableCustomizer("variable a", a,
                   "variable b", b,
                   "variable c", c);

А VariableCustomizer уже сам создат форму ввода, выбрав виджеты по типам переменных a, b и c.

Begemoth ★★★★★
()

делал себе некое подобие ORM
там я себе завёл yml вида
header0: Наименование
header1: Номер
col_type0: string
col_type1: int
и простенький парсер вида:

if ("col_type"+ind == "string")
{
QLineEdit *le = new QLineEdit(this);
layout->addWidget(le);
m_widgets.put(le,"string");
}
else
if ("col_type"+ind == "int") 
{
QSpinBox *sb = new QSpinBox(this);
layout->addWidget(sb);
m_widgets.put(sb,"int");
}
при последующей сборке значейний с формы делаю примерно так:
int ind = 0;
foreach (Widget w:m_widgets.keys())
{
if (m_widgets.value(w) == "string")
{
m_output.put(((QLineEdit)w)->getText(),"header"+ind);
}
else
if (m_widgets.value(w) == "int")
{
m_output.put(((QSpinBox)w)->getValue(),"header"+ind);
}
ind++;
}

TERRANZ ★★★★
()

У меня есть такой самодельный виджет со всеми говнами-пирогами, но ищу «общепризнанный стандарт».

Да, у меня просто создаётся QWidget, который умеет создавать на себе 4 типа разных виджетов в зависимости от типа параметра. Там всё сделано не очень «чисто», но смысл в том, что ему сообщается список параметров (имя параметра + его тип) и переменная, куда класть результат. Он рисует виджеты.

Но у меня немного сложнее - есть свой класс «Value», у которого есть такие операторы:

Value& operator=(bool _bool);
Value& operator=(long long _bool);
Value& operator=(double _bool);
Value& operator=(const char *_bool);

bool getBool();
long long getLongLong();
double getDouble();
const char* getString();

и в массив таких Value отправляются все значения, которые поставил юзверь.

Но, может быть, есть уже что-то готовое, что будет лучше использовать, чем такую самодеятельность? Незнаю. У меня есть два приложения - в одном эта самодеятельность останется из-за специфики - там всё очень кастомно, со своими аллокаторами и говнами-пирогами. А в другом приложении хочется сделать всё очень, так сказать, ширпотребно в том числе изнутри.

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

я бы, раз уж всё равно кути, пользовал QVariant на твоём месте
но тебе, конечно, виднее
честно скажу, не встречал таких генераторов форм

TERRANZ ★★★★
()
Ответ на: комментарий от TERRANZ

Значит надо свой допилить, опубликовать и прославицца.

У меня не всё на Qt - есть часть, которая от GUI в любой момент может быть отвязана и зафигачена в консольное приложение.

kiverattes ★☆
() автор топика
Ответ на: комментарий от exception13

>только мне одному это напомнило пост типичного дельфи-погроммиста?

Задача декларативно описать набор параметров или настроек встает достаточно часто, но в Qt нет ее стандартного решения. Поэтому типичный qt-погроммист городит свои велосипеды.

staseg ★★★★★
()
Ответ на: комментарий от exception13

>только мне одному это напомнило пост типичного дельфи-погроммиста?

Неа, мне тоже. У них даже ЕМНИП есть форум какой-то, где они компонентами делятся =)

По сабжу - накатай свой, или в таблицу засунь несколько других.

Zhbert ★★★★★
()

QPropertyWidget

Как-то так. Есть в компонтентах на сайте qt

namezys ★★★★
()
Ответ на: комментарий от kiverattes

О, я и не знал о таком :) Надо будет попробовать как-нибудь. Только, боюсь, как и все qt-шное использование будет синтаксически очень многословным.

Сейчас генерирую такие формы в рантайме из лиспо-конфига, взятого из конфигурационного файла или просто захардкоженного. Раньше использовал xml, но тоже многабуков, неудобно.

staseg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.