Просмотр сообщений
|
Страниц: [1] 2 3
|
1
|
Qt / Общие вопросы / Re: отловить перемещение мыши по дереву
|
: Ноябрь 24, 2020, 09:46
|
выходит, никакие переопределения классов не нужны. создал пустой проект, добавил ui->treeWidget->setMouseTracking(true); ui->treeWidget->viewport()->installEventFilter(this); и всё работает. зачем тогда везде советуют переопределение, мне осталось непонятно. спасибо, добрый человек
|
|
|
4
|
Qt / Общие вопросы / Re: отловить перемещение мыши по дереву
|
: Ноябрь 23, 2020, 20:24
|
я ведь отправил весь код? после installEventFilter(this); нужно писать bool eventFilter(QObject* object, QEvent* event) { if (event->type() == QEvent::MouseButtonPress) { qDebug()<<555; } return false; } да? но ни в классе переобъявленного дерева, ни в основном классе это событие не ловится. virtual void mousePressEvent(QMouseEvent *){} работает, но тогда до дерева не доходят нажатия, словно жму в пустоту
|
|
|
6
|
Qt / Общие вопросы / отловить перемещение мыши по дереву
|
: Ноябрь 23, 2020, 18:36
|
не нашёл стандартного способа отловить перемещение и даже нажатие мыши на qtreewidget. в сети указывают, что необходимо переопределить qtreewdget. создал класс mytree, кинул на форму, правым кликом преобразовал в MyTree. класс MyTree.h: #ifndef MYTREE_H #define MYTREE_H #include <QTreeWidget> namespace Ui { class MyTree; } class MyTree : public QTreeWidget { Q_OBJECT private slots: void updateTime() { qDebug()<<12; } public: MyTree(QWidget *parent = 0) : QTreeWidget(parent) { setMouseTracking(true); } // void mouseMoveEvent(QMouseEvent *) { // } //void mousePressEvent(QMouseEvent *);{ //} // void mouseReleaseEvent(QMouseEvent *){ // } } }; #endif
если раскоментировать, например, mousePressEvent, то я смогу обрабатывать действия по нажатию, но сигнал о том, что произошло нажатие, даже не отправится в дерево( что я делаю не так?
|
|
|
7
|
Qt / Вопросы новичков / переобъявить переменную
|
: Май 29, 2020, 13:17
|
имеется переменная model, которая, в зависимости от состояния переключателя, может быть QSqlQueryModel или QStandardItemModel. как в коде переобъявить переменную под нужный тип? такая конструкция не работает: QVariant *model; if(ui->checkBox->isChecked()){ model=new QSqlQueryModel(); }else{ model = new QStandardItemModel(); }
|
|
|
8
|
Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос
|
: Май 29, 2020, 10:17
|
я перечитал все темы. очень часто пишут ( http://www.prog.org.ru/topic_12893_0.html) про переопределение функции flags, которое позволило бы сделать ячейки редактируемыми. я создал свой класс, прописал там Qt::ItemFlags EditableSqlModel::flags( const QModelIndex &index) const { Qt::ItemFlags flags = QSqlQueryModel::flags(index); flags |= Qt::ItemIsEditable; return flags; } но ничего не изменилось, я не могу редактировать ячейки. или нужно что-то где-то еще прописать?
|
|
|
13
|
Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос
|
: Май 27, 2020, 21:41
|
начал использовать QSqlQueryModel действительно помогло, спасибо, но не могу найти нормальный аналог сигнала itemChanged(QStandardItem*). мне нужно получать содержимое ячейки в первой колонки той строки, в которой что-то редактируется пользователем
|
|
|
14
|
Qt / Вопросы новичков / заполнить таблицу ответом на sql-запрос
|
: Май 27, 2020, 18:01
|
имеется sql запрос, который возвращает ответ в сотни строк по сотне колонок в каждом. затем данные заносятся в модель "поячеечно": while (query->next()) { for(int j=0; j<spisokkolonok.count(); j++) { item = new QStandardItem(); item->setText(query->value(j).toString()); item->setFont(font); modell->setItem(i, j, item); } i++; } затем модель засовывается в tableView. это происходит очень медленно (секунды). подскажите, как можно быстрее выдавать строки ответа в таблицу? (желательно, в tableView же, мне еще с ним работать потом)
|
|
|
15
|
Qt / Вопросы новичков / переменные-тёски в разных классах
|
: Май 19, 2020, 20:13
|
у меня много разных классов, в них похожие переменные. чтобы не путаться, я даю им одинаковые имена, но qt ругается. тогда я просто пишу static перед всеми объявлениями, и всё работает. правильно ли я делаю? если нет, то как правильно? (классы похожие, давать разные имена переменным не вариант)
|
|
|
|
|