Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Август 13, 2012, 21:04



Название: Как создать свой собственный combobox ?
Отправлено: virtual_root от Август 13, 2012, 21:04
Добрый вечер снова! Ребята, подскажите как реализовать мою идею)
Мне нужно создать свой компонент выпадающего списка. Только это должен быть список маркеров для текстового редактора. Как в word есть нумерованный список, а есть маркированный, мы нажимаем на маленький треугольник справа и выпадает список вариантов маркеров для списка. Я пыталась наследоваться от компонента QCombobox. Ну не могу ничего изменить в наследнике всё время выпадает ошибка:
Код:
undefined reference to 'vable for PictureCmboBox'
Я понимаю, что он ругается на таблицу виртуальных функций, но почему не могу понять...
Вот мой код, и он не компилируется... не понятно почему...
Код
C++ (Qt)
class PictComboBox : public QComboBox
{
public :
    PictComboBox(QWidget* parent) : QComboBox(parent)
    {
    }
}
 
Смотрела в сторону реализации с помощью делегата, ну что-то не пойму как с помощью него такое сделать... Подскажите, может кому уже приходилось такое реализовывать?


Название: Re: Как создать свой собственный combobox ?
Отправлено: kambala от Август 13, 2012, 21:17
может из-за неправильной сигнатуры конструктора? попробуй PictComboBox(QWidget* parent = 0).

да, а #include <QComboBox> написано? :)


Название: Re: Как создать свой собственный combobox ?
Отправлено: virtual_root от Август 13, 2012, 21:34
это наверное был баг Qt... я ещё раз пересоздала класс и всё собралось. Спасибо большое. А дальше как мне список такой воплотить в реальность не подскажите?


Название: Re: Как создать свой собственный combobox ?
Отправлено: Bepec от Август 14, 2012, 06:56
Я тебе советую сделать простой виджет - layout с масенькими кнопачками внутри. Выйдет быстрее и проще % на 80.

Ну или сделать свой собственный model-view, с блекджеком и ш... и бабками :D


Название: Re: Как создать свой собственный combobox ?
Отправлено: virtual_root от Август 14, 2012, 09:52
Я так и решила Верес, просто сделать кнопочками. Вот как я придумала:
возьму 2 кнопки QPushButton, одну из них сделаю квадратной формы и наложу на неё картинку списка, вторую прилеплю рядом и наложу на неё картинку маленького треугольника раскрывающего списка. Чтобы получилось как на прикрепленной картинке. По щелчке по квадратной кнопке будут раскрывать виджет который расположу под ними и который напихаю картинки маркеров)) вот так придумала)


Название: Re: Как создать свой собственный combobox ?
Отправлено: Bepec от Август 14, 2012, 10:20
В принципе в моём стиле сделано - максимально просто. А можно было бы посложнее - сделать свою кнопочку с отрисовочкой и реакцией на нажатие :)

PS минимум затрат - максимум результата. Угумс.


Название: Re: Как создать свой собственный combobox ?
Отправлено: Странник от Август 14, 2012, 11:39
я сейчас страшную вещь спрошу. обычный QComboBox чем не устроил? вам же по сути нужен QComboBox, содержащий картинки, или я чего-то в этой жизни не понял?
Код:
comboBox->addItem(QIcon(":/icons/mark1.png"), QString());
comboBox->addItem(QIcon(":/icons/mark2.png"), QString());
comboBox->addItem(QIcon(":/icons/mark3.png"), QString());


Название: Re: Как создать свой собственный combobox ?
Отправлено: Bepec от Август 14, 2012, 11:57
Странник, а разве combobox поддерживает расположение итемов в сетке ?

Аля gridView?


Название: Re: Как создать свой собственный combobox ?
Отправлено: virtual_root от Август 14, 2012, 12:04
Картинки запихивать то можно в QCombobox, но мне же нужен внешний вид компонента как на картинке, что я выше привела.


Название: Re: Как создать свой собственный combobox ?
Отправлено: Странник от Август 14, 2012, 12:22
Странник, а разве combobox поддерживает расположение итемов в сетке ?

Аля gridView?
QListView поддерживает. и стоит в качестве view по умлочанию.
Код:
QListView *view = qobject_cast<QListView *>(comboBox->view());
if (view)
{
    view->setFlow(QListView::LeftToRight);
    view->setWrapping(true);
    view->setResizeMode(QListView::Adjust);
}
как-то так, мог что-то забыть. но мне лично больше нравится в столбец.

Картинки запихивать то можно в QCombobox, но мне же нужен внешний вид компонента как на картинке, что я выше привела.
стили?


Название: Re: Как создать свой собственный combobox ?
Отправлено: Bepec от Август 14, 2012, 12:41
Об вот этом я и незнал. Что в comboBox listView. Тогда да - просто использовать приведённый код и вуаля.


Название: Re: Как создать свой собственный combobox ?
Отправлено: andrew.k от Август 14, 2012, 14:30
Пока читал тред пару раз в обморок грохнулся)

Об вот этом я и незнал. Что в comboBox listView. Тогда да - просто использовать приведённый код и вуаля.
стыдно, батенька!


Название: Re: Как создать свой собственный combobox ?
Отправлено: Bepec от Август 14, 2012, 14:53
Стыдно ногой пнуть беспомощного и беззащитного.

Мне не стыдно чего-то незнать :) Мне стыдно чему то не научиться :D

PS атятя :D