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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3
1  Qt / Общие вопросы / Re: отловить перемещение мыши по дереву : Ноябрь 24, 2020, 09:46
выходит, никакие переопределения классов не нужны. создал пустой проект, добавил
Код:
ui->treeWidget->setMouseTracking(true);
     ui->treeWidget->viewport()->installEventFilter(this);
и всё работает. зачем тогда везде советуют переопределение, мне осталось непонятно. спасибо, добрый человек
2  Qt / Общие вопросы / Re: отловить перемещение мыши по дереву : Ноябрь 23, 2020, 22:57
я получаю нажатия от QWidgetWindow(0x4487a0, name = "MainWindowWindow") и от QWidget(0xebb588, name = "qt_scrollarea_viewport"), но не от дерева(
3  Qt / Общие вопросы / Re: отловить перемещение мыши по дереву : Ноябрь 23, 2020, 21:15
вот пустой проект с этой проблемой. на дереве ничего не нажимается. eventfilter никак не работает
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 *){}
работает, но тогда до дерева не доходят нажатия, словно жму в пустоту
5  Qt / Общие вопросы / Re: отловить перемещение мыши по дереву : Ноябрь 23, 2020, 19:34
можете чуть подробнее? у меня есть EventFilter в основном классе программы, там я и обрабатываю события дерева. те, что могу
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;
}
но ничего не изменилось, я не могу редактировать ячейки. или нужно что-то где-то еще прописать?
9  Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос : Май 29, 2020, 09:36
если я правильно прочитал описание QSqlQueryModel, эта модель выводит 1 таблицу, тогда как у меня более сложный запрос, чем просто вывод таблицы
10  Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос : Май 29, 2020, 00:29
всё перепробовал, никак. необходимо по двойному щелчку в ячейке  tableview с моделью qsqlquerymodel редактировать данные. не получается сделать таблицу редактируемой. есть у кого опыт?
11  Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос : Май 28, 2020, 11:35
- подскажите, как сделать ЭТО?
- посмотри ЭТО в документации  Улыбающийся
12  Qt / Вопросы новичков / Re: заполнить таблицу ответом на sql-запрос : Май 28, 2020, 09:44
я использовал стандартную модель. в ней был сигнал itemChanged(QStandardItem*). нужен аналог такого сигнала в QSqlQueryModel, чтобы я мог получить текст и номер строки изменяемой ячейки модели
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 перед всеми объявлениями, и всё работает. правильно ли я делаю? если нет, то как правильно? (классы похожие, давать разные имена переменным не вариант)
Страниц: [1] 2 3

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