<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Qt: множественное наследование.</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html</link>
    <description>//дано:&lt;br&gt;//Qt 4.3.3&lt;br&gt;//Class EditWidget: public QFrame&#123;&lt;br&gt;//...&lt;br&gt;//public:&lt;br&gt;//...&lt;br&gt;//QVariant getData() const;&lt;br&gt;//void setData(QVariant);&lt;br&gt;//void clear();&lt;br&gt;//&#125;;&lt;br&gt;//&lt;br&gt;//не могу :) (требуется):&lt;br&gt;//&lt;br&gt;//реализовать widget с единым интерфейсом доступа к редактируемым данным.&lt;br&gt;//например такой код - EditWidget *p = new EditWidget(&quot;string&quot;);&lt;br&gt;//должен создать объект QFrame с QLineEdit в нем,&lt;br&gt;//EditWidget *p = new EditWidget(&quot;date&quot;); - QFrame и QDateEdit в нем&lt;br&gt;//&lt;br&gt;// попробовал так:&lt;br&gt;&lt;br&gt;#include &amp;lt;QApplication&amp;gt;&lt;br&gt;#include &amp;lt;QString&amp;gt;&lt;br&gt;#include &amp;lt;QVariant&amp;gt;&lt;br&gt;#include &amp;lt;QWidget&amp;gt;&lt;br&gt;#include &amp;lt;QLineEdit&amp;gt;&lt;br&gt;#include &amp;lt;QHBoxLayout&amp;gt;&lt;br&gt;&lt;br&gt;class AbstractEdit: virtual public QWidget&#123;&lt;br&gt;public:&lt;br&gt;virtual QVariantgetData() const = 0;&lt;br&gt;virtual voidsetData(const QVariant&amp; adata) = 0;&lt;br&gt;virtual voidclear() = 0;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class LineEdit: virtual public AbstractEdit, virtual public QLineEdit&#123;&lt;br&gt;public:&lt;br&gt;LineEdit(QWidget* aparent=0): QLineEdit(aparent)&#123;&#125;&lt;br&gt;LineEdit(const QVariant&amp; adata, QWid</description>

<item>
    <title>Qt: множественное наследование. (sherzod)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#6</link>
    <pubDate>Tue, 06 May 2008 06:26:12 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt;вместо этой кривизны тогда уж лучше шаблон заюзать &lt;br&gt;&lt;br&gt;например?&lt;br&gt;как можно обойти в таком случае moc (который не поддерживает шаблоны)?&lt;br&gt;</description>
</item>

<item>
    <title>Qt: множественное наследование. (qtprog)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#5</link>
    <pubDate>Sat, 03 May 2008 07:41:29 GMT</pubDate>
    <description>&amp;gt;  EditWidget(QString type):QWidget()&#123; &lt;br&gt;&amp;gt;   layout = new QHBoxLayout; &lt;br&gt;&amp;gt;   if(type == &quot;lineedit&quot;)&#123; &lt;br&gt;&amp;gt;    implementor = new LineEdit(this); &lt;br&gt;&amp;gt;if(implementor) layout-&amp;gt;addWidget((LineEdit*)implementor);&lt;br&gt;&amp;gt;   &#125; &lt;br&gt;&amp;gt;   if(type == &quot;dateedit&quot;)&#123; &lt;br&gt;&amp;gt;    implementor = new DateEdit(this); &lt;br&gt;&amp;gt;if(implementor) layout-&amp;gt;addWidget((DateEdit*)implementor);&lt;br&gt;&amp;gt;   &#125; &lt;br&gt;&lt;br&gt;вместо этой кривизны тогда уж лучше шаблон заюзать&lt;br&gt;</description>
</item>

<item>
    <title>Qt: множественное наследование. (sherzod)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#4</link>
    <pubDate>Fri, 02 May 2008 09:56:27 GMT</pubDate>
    <description>огромное спасибо&lt;br&gt;ваша идея работает (с небольшими изменениями):&lt;br&gt;&lt;br&gt;#include &amp;lt;QApplication&amp;gt;&lt;br&gt;#include &amp;lt;QString&amp;gt;&lt;br&gt;#include &amp;lt;QVariant&amp;gt;&lt;br&gt;#include &amp;lt;QWidget&amp;gt;&lt;br&gt;#include &amp;lt;QLineEdit&amp;gt;&lt;br&gt;#include &amp;lt;QDateEdit&amp;gt;&lt;br&gt;#include &amp;lt;QHBoxLayout&amp;gt;&lt;br&gt;&lt;br&gt;class Implementor&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;Implementor()&#123;&#125;;&lt;br&gt;virtual ~Implementor()&#123;&#125;;&lt;br&gt;virtual void setData(QVariant)&#123;&#125;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class LineEdit: public QLineEdit, public Implementor &lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;        LineEdit(QWidget *parent = 0): QLineEdit(parent)&#123;&#125;;&lt;br&gt;        void setData(const QVariant data)&#123;setText(data.toString());&#125;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class DateEdit: public QDateEdit,  public Implementor&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;        DateEdit(QWidget *parent = 0): QDateEdit(parent)&#123;&#125;;&lt;br&gt;        void setData(const QVariant data)&#123;setDate(data.toDate());&#125;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class EditWidget: public QWidget&lt;br&gt;&#123;&lt;br&gt;protected:&lt;br&gt;QHBoxLayout*layout;&lt;br&gt;Implementor *implementor;&lt;br&gt;public:&lt;br&gt;EditWidget(QString type):QWidget()&#123;&lt;br&gt;layout = new QHBoxLayout;&lt;br&gt;if(type == &quot;lineedit&quot;)&#123;&lt;br&gt;implementor = new LineEdit(this);&lt;br&gt;if(implemento</description>
</item>

<item>
    <title>Qt: множественное наследование. (primus)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#3</link>
    <pubDate>Fri, 02 May 2008 03:31:37 GMT</pubDate>
    <description>&amp;gt;ну хоть кто-то отозвался:) спасибо &lt;br&gt;&amp;gt;вообще рабочая версия такая и есть... &lt;br&gt;&amp;gt;но хотелось бы легкости в сопровождении &lt;br&gt;&amp;gt;при появлении новых виджетов &lt;br&gt;&amp;gt;приходится дополнять все функции (getData(), setData(), clear(), isMoified() и т.д.) дополнительными проверками &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;было бы замечательно если такая проверка осуществлялась только при создании editora... &lt;br&gt;&lt;br&gt;или вот так&lt;br&gt;&lt;br&gt;#include &amp;lt;QApplication&amp;gt;&lt;br&gt;#include &amp;lt;QString&amp;gt;&lt;br&gt;#include &amp;lt;QVariant&amp;gt;&lt;br&gt;#include &amp;lt;QWidget&amp;gt;&lt;br&gt;#include &amp;lt;QLineEdit&amp;gt;&lt;br&gt;#include &amp;lt;QDateEdit&amp;gt;&lt;br&gt;#include &amp;lt;QHBoxLayout&amp;gt;&lt;br&gt;&lt;br&gt;class Implementor&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;        Implementor()&#123;&#125;;&lt;br&gt;        virtual ~Implementor()&#123;&#125;;&lt;br&gt;        virtual void setData(QVariant)&#123;&#125;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class LineEdit : public Implementor, public QLineEdit&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;        LineEdit(QWidget *parent = 0): QLineEdit(parent)&#123;&#125;;&lt;br&gt;        void setData(const QVariant data)&#123;setText(data.toString());&#125;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;class DateEdit : public Implementor, public QDateEdit&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;        DateEdit(QWidget *parent = 0): QDateEdit(parent)&#123;&#125;;&lt;br&gt;        void set</description>
</item>

<item>
    <title>Qt: множественное наследование. (sherzod)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#2</link>
    <pubDate>Thu, 01 May 2008 12:54:59 GMT</pubDate>
    <description>ну хоть кто-то отозвался:) спасибо&lt;br&gt;вообще рабочая версия такая и есть...&lt;br&gt;но хотелось бы легкости в сопровождении&lt;br&gt;при появлении новых виджетов&lt;br&gt;приходится дополнять все функции (getData(), setData(), clear(), isMoified() и т.д.) дополнительными проверками&lt;br&gt;было бы замечательно если такая проверка осуществлялась только при создании editora...&lt;br&gt;</description>
</item>

<item>
    <title>Qt: множественное наследование. (primus)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7343.html#1</link>
    <pubDate>Thu, 01 May 2008 12:08:27 GMT</pubDate>
    <description>&amp;gt;//  реализовать widget с единым интерфейсом доступа к редактируемым данным. &lt;br&gt;&amp;gt;//  например такой код - EditWidget *p = new EditWidget(&quot;string&quot;); &lt;br&gt;&amp;gt;//  должен создать объект QFrame с QLineEdit в нем, &lt;br&gt;&amp;gt;//  EditWidget *p = new EditWidget(&quot;date&quot;); - QFrame и QDateEdit в &lt;br&gt;&amp;gt;нем &lt;br&gt;&lt;br&gt;может вот так?&lt;br&gt;&lt;br&gt;#include &amp;lt;QApplication&amp;gt;&lt;br&gt;#include &amp;lt;QString&amp;gt;&lt;br&gt;#include &amp;lt;QVariant&amp;gt;&lt;br&gt;#include &amp;lt;QWidget&amp;gt;&lt;br&gt;#include &amp;lt;QLineEdit&amp;gt;&lt;br&gt;#include &amp;lt;QDateEdit&amp;gt;&lt;br&gt;#include &amp;lt;QHBoxLayout&amp;gt;&lt;br&gt;&lt;br&gt;class EditWidget: virtual public QWidget&#123;&lt;br&gt;    private:&lt;br&gt;        QWidget *editor;&lt;br&gt;        QString mytype;&lt;br&gt;  public:&lt;br&gt;        EditWidget()&#123;&#125;;&lt;br&gt;        EditWidget(const QString&amp; type)&#123;&lt;br&gt;            mytype = type;&lt;br&gt;            setLayout(new QVBoxLayout);&lt;br&gt;            if(type == &quot;lineedit&quot;)&lt;br&gt;                editor = new QLineEdit();&lt;br&gt;            else if (type == &quot;dateedit&quot;)&lt;br&gt;                editor = new QDateEdit();&lt;br&gt;                layout()-&amp;gt;addWidget(editor);&lt;br&gt;        &#125;&lt;br&gt;            ;&lt;br&gt;        ~EditWidget()&#123;if(editor) delete editor;&#125;;&lt;br&gt;        virtual QVariant  </description>
</item>

</channel>
</rss>
