crossplatform.ru

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


  Ответ в сигналы и слоты
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
demaker Дата 1.2.2013, 15:37
  Да нет, работает :)
Спасибо
lanz Дата 1.2.2013, 15:17
  Не работает?
demaker Дата 1.2.2013, 14:49
  Это понятно, т.е у меня TreeWidgetItem не наследуется от QObject?

class TreeWidgetItem: public QObject,public QTreeWidgetItem
{
    Q_OBJECT

public:
    Plot* p;

public:
    explicit TreeWidgetItem(TreeWidgetItem*parent);
    explicit TreeWidgetItem(QTreeWidget*parent);
    explicit TreeWidgetItem(QTreeWidgetItem*parent);
    ~TreeWidgetItem();

signals:
    void sg_unChecked();
};


Вы предлагайте так сделать
lanz Дата 1.2.2013, 14:26
  Чтобы использовать сигналы/слоты TreeWidgetItem и Widget должен наследовать от QObject.
demaker Дата 1.2.2013, 13:19
  Определил все и сигнал и слот

connect(items.at(index),SIGNAL(sg_unChecked(TreeWidgetItem*)),this,SLOT(sl_deletePlot(TreeWidgetItem*)));


и ВЫДАЕТ

no matching function for call to 'Widget::connect(TreeWidgetItem* const&, const char*, Widget* const, const char*)'
Алексей1153 Дата 31.1.2013, 13:05
  demaker, здравая мысль )
demaker Дата 31.1.2013, 12:58
  может
connect(tree,SIGNAL(sg_itemChecked(QTreeWidgetItem*)),this,SLOT(sl_itemChecked(Q
TreeWidgetItem*)));
в конструктор переместить
demaker Дата 31.1.2013, 9:05
  да сделал сигнал константным

signals:
    void sg_itemChecked(QTreeWidgetItem*) const;


действительно помогло :)
Спасибо!

у меня возник такой вопрос. :unsure:

Почему при перетаскивании item-ов у меня изначально первый, который изначально я беру - галка не ставится.
После у остальных, которые я хватаю ставится галка, и даже у того который был изначально.

И так со всеми.

Не могу понять, может сигнал изначально не доходит :unsure:

вот код:

QMimeData * TreeWidget::mimeData (const QList<QTreeWidgetItem *> items) const
{
    QMimeData *mimeData = new QMimeData();
    QByteArray encodedData;


    foreach (QTreeWidgetItem* item, items)
    {
        qDebug() <<"index = " << fileName_Item->indexOfChild(item);
        qDebug()<<"data = "<<item->data(0,Qt::EditRole);

        emit sg_itemChecked(item);
        encodedData.append(item->data(0,Qt::EditRole).toByteArray());
    }

    mimeData->setData( "application/x-qt-windows-mime;value=\"ComtradeChannel\"", encodedData);
    return mimeData;
}



void Widget::sl_itemChecked(QTreeWidgetItem *item)
{
    item->setCheckState(0,Qt::Checked);
}


void Widget::dropEvent(QDropEvent *event)
{
if (event->mimeData()->hasFormat("application/x-qt-windows-mime;value=\"ComtradeChannel\""))
    {
        QByteArray d(event->mimeData()->data("application/x-qt-windows-mime;value=\"ComtradeChannel\""));
        qDebug()<<"d = "<<d;

        connect(tree,SIGNAL(sg_itemChecked(QTreeWidgetItem*)),this,SLOT(sl_itemChecked(QTreeWidgetItem*)));
    }
}
Алексей1153 Дата 30.1.2013, 18:59
  это не отправка сигнала, а соединение сигнала со слотом вообще то )

и всё как бы намекает, что из константной функции это сделать не получится напрямую

но если сильно хочется, можно попробовать

connect(tree,SIGNAL(sg_itemChecked(QTreeWidgetItem*)),static_cast<TreeWidget*>(this),SLOT(sl_itemChecked(QTreeWidgetItem*)));
Авварон Дата 30.1.2013, 18:04
  Сделай сигнал константным. А нафига кидать сигнал из конст() функции?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 22:33