Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 3.3.2011, 9:04 |
//! [0] TimeEditDelegate::TimeEditDelegate(QObject *parent) : QItemDelegate(parent) { } //! [0] кстати! А что вот эта штучка обозначает - "//! [0]" ? |
|
Hepr | Дата 21.2.2011, 22:35 |
Что бы не открывать новой темы, позвольте задать в этой еще 1 вопрос, как я понимаю значение в ячейке таблицы, по умолчанию имеет тип int, а как можно его переделать в QTime, а то после того как я в делегате, выставлю время, она не сохраняется, там так и остается, то значение в int, что и было | |
Hepr | Дата 21.2.2011, 18:36 |
1. Вижу объявление указателя на класс QTime * val; А вот где выделяется память под объект класса не увидел. Если здесь охота работать именно с указателями, нужно в конструкторе написать:
И потом уже использовать val (*val). 2. Нет никакой необходимости делать переменную член класса QTime * val общедоступной. 3. Нет никакой необходимости вообще использовать переменную-член QTime * val. 4. Нет никакой необходимости использовать переменную QTime * val как указатель (достаточно либо самого объекта, либо константной ссылки на него - в данном случае). 5. Многие куски кода можно переписать так:
заменить на:
заменить на:
и т.д. Спасибо большое, блин искал в ассистенте что делают те или иные функции, классы, а сам память забыл в конструкторе выделить, спасибо большое |
|
Rocky | Дата 21.2.2011, 18:06 |
1. Вижу объявление указателя на класс QTime * val; А вот где выделяется память под объект класса не увидел. Если здесь охота работать именно с указателями, нужно в конструкторе написать:
И потом уже использовать val (*val). 2. Нет никакой необходимости делать переменную член класса QTime * val общедоступной. 3. Нет никакой необходимости вообще использовать переменную-член QTime * val. 4. Нет никакой необходимости использовать переменную QTime * val как указатель (достаточно либо самого объекта, либо константной ссылки на него - в данном случае). 5. Многие куски кода можно переписать так:
заменить на:
заменить на:
и т.д. |
|
Hepr | Дата 21.2.2011, 17:56 |
рррррр.. В посте номер 1 такой код:
В посте номер 11:
Т.е. воспринято было буквально, value заменен на val. Я бы посоветовал пойти почитать для начала любую книгу "С++ для начинающих" и т.п. В частности что такое указатели, для чего они, как с ними работать и пр. и пр. Иначе код такой потом получится что мама не горюй. Я как раз после такой книги, и ни смотря на то что я буквально понял подсказку-ошибки больше не выдавалось, и текст начал компилироваться нормально, И я вроде неплохо варю С++(насколько это возможно для новичка), что такое указатели и как их использовать знаю, просто я Qt совсем не давно начал изучать вот и часто глупости пишу, и все-таки не могли бы подсказать где ошибка, а лучше тыкнуть носом, а то я совсем запутался |
|
Rocky | Дата 21.2.2011, 17:02 |
рррррр.. В посте номер 1 такой код:
В посте номер 11:
Т.е. воспринято было буквально, value заменен на val. Я бы посоветовал пойти почитать для начала любую книгу "С++ для начинающих" и т.п. В частности что такое указатели, для чего они, как с ними работать и пр. и пр. Иначе код такой потом получится что мама не горюй. |
|
Hepr | Дата 21.2.2011, 16:14 |
Здравствуйте, теперь все компилируется нормально, проект запускается, но как только я хочу вызвать делегат выдает ошибку(Нарушение прав доступа при чтении), я понимаю чем это может быть вызвано(обращение не к публичной функции вне класса и тп), но где именно в коде может провоцироваться ошибка, я так и не нашел, помогите пожалуйста delegate.h
delegate.cpp
main.cpp
P.S. заранее огромное спасибо, за потраченное время |
|
Litkevich Yuriy | Дата 21.2.2011, 11:13 |
Qt::EditRole); // и показало что ошибка в этой строке он просто показал на конец оператора. Си/Си++ компилятор не в силах определить место в строке, только саму строку.можешь для эксперимента закрывающуюся скобку перенести на другую строку |
|
Hepr | Дата 20.2.2011, 23:28 |
Цитата Переименуй value. И вправду помогло, а не объясните в чем было проблема, дайте угадаю это была какая-то системная переменная или тп? А не подскажите как теперь установить делегат в QTableWidget, нужный item(а точнее в column) P.S. огромное спасибо за помощь, без вас я бы вряд ли сам понял, где собака зарыта |
|
hepr | Дата 20.2.2011, 23:17 |
Ошибка возникает тут: model->setData(index, value , Qt::EditRole); А именно на Qt::EditRole, но почему я не понимаю( Ошибка 1 error C2248: QVariant::QVariant: невозможно обратиться к private член, объявленному в классе "QVariant" c:\Documents and Settings\hepr\Мои документы\Visual Studio 2008\Projects\asd\asd\delegets\delegate.cpp 87 Где тут написано, что ошибка возникает на Qt::EditRole? Во всяком случае VS мне указывает именно на эту строку P.S. я разбил model->setData(index, value , Qt::EditRole); на model->setData(index, value , Qt::EditRole); // и показало что ошибка в этой строке |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 11:32 |