Russian Qt Forum
Ноябрь 24, 2024, 10:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать Q_PROPERTY типа QStringList  (Прочитано 9463 раз)
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« : Октябрь 18, 2007, 15:51 »

Свойство необходимо для выбора в Дизайнере одного из SQL драйверов для плагина работы с базой данных. Тролли пишут что это возможно через QVariant. Кто знает помогите разобраться.
 Непонимающий
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Октябрь 18, 2007, 17:07 »

Так разве не получаеться?

Код:
class SomeClass ...
{

    Q_PROPERTY(QStringList property READ property WRITE setProperty)

public:
    void setProperty(const QStringList &priority);
    QStringList property() const;
...
};
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #2 : Октябрь 19, 2007, 08:39 »

Так разве не получаеться?

Код:
class SomeClass ...
{

    Q_PROPERTY(QStringList property READ property WRITE setProperty)

public:
    void setProperty(const QStringList &priority);
    QStringList property() const;
...
};

Не получается. Компилятор проглатывает, но при старте Дизайнера вылетает ошибка QtCore4.dll
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Октябрь 19, 2007, 12:41 »

Хм, я тут поковырялся Qt Designer.. Поидее падать не должно. Поддержка QStringList есть... Но оказываеться, это не то что вам нужно. Если я не ошибаюсь, вам нужно сделать такое свойство, чтобы можно было производить редактирование значения свойства при помощи комбобокса, так?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #4 : Октябрь 19, 2007, 12:53 »

Хм, я тут поковырялся Qt Designer.. Поидее падать не должно. Поддержка QStringList есть... Но оказываеться, это не то что вам нужно. Если я не ошибаюсь, вам нужно сделать такое свойство, чтобы можно было производить редактирование значения свойства при помощи комбобокса, так?

Да именно так. Поддержка QStringList есть.  Компиляция проходит, но Qt Designer падает при старте. Комбобокс должен содержать все действующие SQL драйвера системы. Пользователь должен иметь взможность выбрать из них требуемый.
Какие есть соображения.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Октябрь 19, 2007, 15:00 »

Чесно говоря идей пока и нету... В коде дизайнера есть вот такой класс ListProperty который создаеть комбобокс с списком значений. Но он предназначен для внутреннего использования, и не связан конкретно нескаким типом.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Dodge
Гость
« Ответ #6 : Октябрь 20, 2007, 01:34 »

А чем аффтора не устраивает enum?... или поставка виджета будет в бинарях?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #7 : Октябрь 20, 2007, 09:01 »

А чем аффтора не устраивает enum?... или поставка виджета будет в бинарях?

enum - перечисление. Задается в *.h файле. Устанавливвает набор значений. На каждой конкретной qt может быть разный набор драйверов SQL. И при чем здесь enum?
Записан
-QT-
Гость
« Ответ #8 : Октябрь 20, 2007, 15:03 »

QStringList drivers = QSqlDatabase::drivers();
comboBoxDriver->addItems(drivers);

Или это не подходит ?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #9 : Октябрь 20, 2007, 15:36 »

QStringList drivers = QSqlDatabase::drivers();
comboBoxDriver->addItems(drivers);

Или это не подходит ?

Не подходит. comboBoxDriver это QComboBox, а разговор идет о Q_PROPERTY некоего QWidget
Записан
Dodge
Гость
« Ответ #10 : Октябрь 21, 2007, 11:58 »

А чем аффтора не устраивает enum?... или поставка виджета будет в бинарях?

enum - перечисление. Задается в *.h файле. Устанавливвает набор значений. На каждой конкретной qt может быть разный набор драйверов SQL. И при чем здесь enum?

хы... я знаю что такое енум, причем тут версия куте? ...если виджет будет собираццо на конечном пк, то зачем делать его универсальным по коду? о_0 ...можно обложить макросами... эффект тот же, гемора имхо меньше.
Записан
-QT-
Гость
« Ответ #11 : Октябрь 21, 2007, 14:33 »

/****************************************************************************
**
** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
**
** This file is part of the QtGui module of the Qt Toolkit.
**
** Licensees holding a valid Qt License Agreement may use this file in
** accordance with the rights, responsibilities and obligations
** contained therein.  Please consult your licensing agreement or
** contact sales@trolltech.com if any conditions of this licensing
** agreement are not clear to you.
**
** Further information about Qt licensing is available at:
** http://www.trolltech.com/products/qt/licensing.html or by
** contacting info@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/

#ifndef QTEXTBROWSER_H
#define QTEXTBROWSER_H

#include <QtGui/qtextedit.h>
#include <QtCore/qurl.h>

QT_BEGIN_HEADER

QT_MODULE(Gui)

#ifndef QT_NO_TEXTBROWSER

class QTextBrowserPrivate;

class Q_GUI_EXPORT QTextBrowser : public QTextEdit
{
    Q_OBJECT

    Q_PROPERTY(QUrl source READ source WRITE setSource)
    Q_OVERRIDE(bool modified SCRIPTABLE false)
    Q_OVERRIDE(bool readOnly DESIGNABLE false SCRIPTABLE false)
    Q_OVERRIDE(bool undoRedoEnabled DESIGNABLE false SCRIPTABLE false)
    Q_PROPERTY(QStringList searchPaths READ searchPaths WRITE setSearchPaths)
    Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks)
    Q_PROPERTY(bool openLinks READ openLinks WRITE setOpenLinks)

public:
    explicit QTextBrowser(QWidget* parent = 0);
    virtual ~QTextBrowser();

    QUrl source() const;

    QStringList searchPaths() const;
    void setSearchPaths(const QStringList &paths);

    virtual QVariant loadResource(int type, const QUrl &name);

    bool isBackwardAvailable() const;
    bool isForwardAvailable() const;
    void clearHistory();

    bool openExternalLinks() const;
    void setOpenExternalLinks(bool open);

    bool openLinks() const;
    void setOpenLinks(bool open);

public Q_SLOTS:
    virtual void setSource(const QUrl &name);
    virtual void backward();
    virtual void forward();
    virtual void home();
    virtual void reload();

Q_SIGNALS:
    void backwardAvailable(bool);
    void forwardAvailable(bool);
    void sourceChanged(const QUrl &);
    void highlighted(const QUrl &);
    void highlighted(const QString &);
    void anchorClicked(const QUrl &);

protected:
    bool event(QEvent *e);
    virtual void keyPressEvent(QKeyEvent *ev);
    virtual void mouseMoveEvent(QMouseEvent *ev);
    virtual void mousePressEvent(QMouseEvent *ev);
    virtual void mouseReleaseEvent(QMouseEvent *ev);
    virtual void focusOutEvent(QFocusEvent *ev);
    virtual bool focusNextPrevChild(bool next);
    virtual void paintEvent(QPaintEvent *e);

#if defined(QT3_SUPPORT)
public:
    QT3_SUPPORT_CONSTRUCTOR QTextBrowser(QWidget *parent, const char *name);
#endif

private:
    Q_DISABLE_COPY(QTextBrowser)
    Q_DECLARE_PRIVATE(QTextBrowser)
    Q_PRIVATE_SLOT(d_func(), void _q_documentModified())
    Q_PRIVATE_SLOT(d_func(), void _q_activateAnchor(const QString &))
    Q_PRIVATE_SLOT(d_func(), void _q_highlightLink(const QString &))
};

#endif // QT_NO_TEXTBROWSER

QT_END_HEADER

#endif // QTEXTBROWSER_H

Это то что реально работает в самом QT
поэтому я думаю что трабла зарыта в реализации, а не объявлении.
Что подтверждает компилятор при сборке Вашего кода (как Вы сказали он компилируется)
« Последнее редактирование: Октябрь 21, 2007, 14:35 от -=QT=- » Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #12 : Октябрь 21, 2007, 14:51 »

-=QT=-
Спасибо уже дошел до этого. Ты прав.
Задумка была несколько иная. Наверно не совсем правильно поставил вопрос.
Хотелось бы иметь некое перечислимое свойство, enum для которого можно было бы динамически изменять(например в соответствии с имеющимися в наличии SQL драверами), что бы для него вызывался редактор QComboBox. Чувствую, что это недостижимо, но хотеть не вредно.
Спасибо всем за дискуссию
Записан
-QT-
Гость
« Ответ #13 : Октябрь 21, 2007, 15:12 »

-=QT=-
Спасибо уже дошел до этого. Ты прав.
Задумка была несколько иная. Наверно не совсем правильно поставил вопрос.
Хотелось бы иметь некое перечислимое свойство, enum для которого можно было бы динамически изменять(например в соответствии с имеющимися в наличии SQL драверами), что бы для него вызывался редактор QComboBox. Чувствую, что это недостижимо, но хотеть не вредно.
Спасибо всем за дискуссию


Все равно непонимаю, пока КАК звучит конечная задача. Ведь путей решения может быть несколько.
Если не трудно объясните конечную цель.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 22.