crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> custom widget, как сделать "составные" property?
zamnach
  опции профиля:
сообщение 16.9.2008, 15:44
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 36
Регистрация: 18.7.2008
Пользователь №: 239

Спасибо сказали: 0 раз(а)




Репутация:   0  


синопсис: есть класс MyWidget, хочу прикрутить к нему свойство примерно так
Q_PROPERTY (mytype format READ GetFormat);
// но класс mytype - не относится к QString, bool, int и т.п.
и видимо поэтому, свойство format в QtDesigner не появилось.
в чем подвох?
спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 8.10.2008, 16:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


bobdva, "Хорошо начал, не разменивайся на мелочах" :)
Т.е. и main.cpp давай
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bobdva
  опции профиля:
сообщение 8.10.2008, 17:21
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 2.10.2008
Из: Москва
Пользователь №: 377

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 8.10.2008, 17:39) *
bobdva, "Хорошо начал, не разменивайся на мелочах" :)
Т.е. и main.cpp давай

оказывается не правильно использовал setProperty - надо передавать в него QVariant, но каким-то образом собиралось с просто SomeInfo...

итого - всё работает
widget.h
#include <QWidget>
#include "someinfo.h"

class Widget : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(SomeInfo someInfo READ getSomeInfo WRITE setSomeInfo)
    
public:
    Widget(QWidget *parent = 0): QWidget(parent){};
    
    SomeInfo getSomeInfo() const;
    void setSomeInfo(SomeInfo someInfo);
    
protected:
    SomeInfo someInfo;
};

widget.cpp
#include "widget.h"
#include <iostream>

SomeInfo Widget::getSomeInfo() const{
    return someInfo;
}

void Widget::setSomeInfo(SomeInfo value){
    std::cout << "setSomeInfo" << std::endl;
    someInfo = value;
}

main.cpp
#include <QApplication>
#include <QVariant>
#include "widget.h"

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    Widget *w = new Widget();

    SomeInfo s;    
    QVariant var;
    var.setValue(s);
    w->setProperty("someInfo", var);

    w->show();
    return app.exec();
}


а теперь вопрос - а как бы это всё можно было бы использовать через ui ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 10.10.2008, 19:51
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 36
Регистрация: 18.7.2008
Пользователь №: 239

Спасибо сказали: 0 раз(а)




Репутация:   0  


"итого - всё работает"
приведенный класс SomeInfo в составе плагина к QtDesigner "не работает".
См. код, после сборки и копирования в папку плагинов - плагин есть, а свойства составного в ем нету(
Сувж
Прикрепленные файлы
Прикрепленный файл  test_widgwt.zip ( 2,63 килобайт ) Кол-во скачиваний: 97
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 10:55