Михаиллл
26 декабря 2018 г. 22:38

Как узнать что QTableView пуст?

QT, QTableView

Здравствуйте.
Как узнать что QTableView пуст?
Тут пока работает

  1. QModelIndex IndexForTableView = ui->AllVacancyCompanyTableView->currentIndex();
  2. qDebug()<<IndexForTableView;

Выдает: QModelIndex(-1,-1,0x0,QObject(0x0))
Дальше пишу:

  1. qDebug()<< ui->AllVacancyCompanyTableView->model()->data(ui->AllVacancyCompanyTableView->model()->index(IndexForTableView.row(),0),0);

и на этом моменте вылетает, хотя по логике должно выдавать "-1"

2

Вам это нравится? Поделитесь в социальных сетях!

7
Evgenii Legotckoi
  • 26 декабря 2018 г. 22:44

Добрый день!

Это так работает

  1. if (tableView->model()->rowCount() > 0)
  2. {
  3. qDebug() << "Not empty";
  4. }
  5. else
  6. {
  7. qDebug() << "Is empty";
  8. }
    Михаиллл
    • 26 декабря 2018 г. 22:46

    спасибо

      Михаиллл
      • 26 декабря 2018 г. 22:54

      Если TableView не заполнен, то на

      1. qDebug()<< ui->AllVacancyCompanyTableView->model()->rowCount();

      вылетает, а если заполнен, то все прекрасно.
      видимо обращается к несуществующей модели.

        Evgenii Legotckoi
        • 26 декабря 2018 г. 22:56

        Да, вы правы.

        Вы можете предварительно сделать проверку на существование модели

        1. if (tableView->model() && tableView->model()->rowCount() > 0)
        2. {
        3. qDebug() << "Not empty";
        4. }
        5. else
        6. {
        7. qDebug() << "Is empty";
        8. }
          Михаиллл
          • 26 декабря 2018 г. 23:04

          Вылетает.
          Видимо нужно проверить модель на равенство 0*0, но как это сделать?

          1. if (ui->AllVacancyCompanyTableView->model() == QAbstractItemModel(0x0))

          так не компилируется

            Evgenii Legotckoi
            • 26 декабря 2018 г. 23:06

            или на nullptr проверять или просто в условие закидывать, а такое как вы написали больше никогда не пишите ))

            надо так

            1. if (ui->AllVacancyCompanyTableView->model())

            или так

            1. if (ui->AllVacancyCompanyTableView->model() == nullptr)

            Но первый вариант короче, а делают они одно и тоже

              Михаиллл
              • 26 декабря 2018 г. 23:25
              • Ответ был помечен как решение.

              пробовал

              1. if (ui->AllVacancyCompanyTableView->model())

              выкидывало
              так

              1. if (ui->AllVacancyCompanyTableView->model() == nullptr)

              заработало
              спасибо

                Комментарии

                Только авторизованные пользователи могут публиковать комментарии.
                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                • Последние комментарии
                • IscanderChe
                  12 апреля 2025 г. 17:12
                  Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                • AK
                  1 апреля 2025 г. 11:41
                  Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                • Evgenii Legotckoi
                  9 марта 2025 г. 21:02
                  К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                • VP
                  9 марта 2025 г. 16:14
                  Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                • ИМ
                  22 ноября 2024 г. 21:51
                  Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…