Михаиллл
Dec. 26, 2018, 10:38 p.m.

Как узнать что 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

Do you like it? Share on social networks!

7
Evgenii Legotckoi
  • Dec. 26, 2018, 10:44 p.m.

Добрый день!

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

  1. if (tableView->model()->rowCount() > 0)
  2. {
  3. qDebug() << "Not empty";
  4. }
  5. else
  6. {
  7. qDebug() << "Is empty";
  8. }
    Михаиллл
    • Dec. 26, 2018, 10:46 p.m.

    спасибо

      Михаиллл
      • Dec. 26, 2018, 10:54 p.m.

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

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

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

        Evgenii Legotckoi
        • Dec. 26, 2018, 10:56 p.m.

        Да, вы правы.

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

        1. if (tableView->model() && tableView->model()->rowCount() > 0)
        2. {
        3. qDebug() << "Not empty";
        4. }
        5. else
        6. {
        7. qDebug() << "Is empty";
        8. }
          Михаиллл
          • Dec. 26, 2018, 11:04 p.m.

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

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

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

            Evgenii Legotckoi
            • Dec. 26, 2018, 11:06 p.m.

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

            надо так

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

            или так

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

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

              Михаиллл
              • Dec. 26, 2018, 11:25 p.m.
              • The answer was marked as a solution.

              пробовал

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

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

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

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

                Comments

                Only authorized users can post comments.
                Please, Log in or Sign up
                • Last comments
                • AK
                  April 1, 2025, 11:41 a.m.
                  Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                • Evgenii Legotckoi
                  March 9, 2025, 9:02 p.m.
                  К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                • VP
                  March 9, 2025, 4:14 p.m.
                  Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                • ИМ
                  Nov. 22, 2024, 9:51 p.m.
                  Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                • Evgenii Legotckoi
                  Oct. 31, 2024, 11:37 p.m.
                  Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup