Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
Dec. 28, 2018, 8:20 a.m.

Как в QDialog узнать индекс TableView?

qt, QDialog, QTableView

Здравствуйте. В QDialog создал TableView и пытаюсь опрределить его индекс. Дебаг возвращает:setGeometry: Unable to set geometry 116x30+2100+419 on QWidgetWindow/'QDialogClassWindow'. Resulting geometry: 178x122+2100+419 (frame: 8, 30, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 178x122, maximum size: 16777215x16777215). Скажите пожалуйста, как узнать индекс?

QDialog dlg(this);
        dlg.setWindowTitle(tr("Выберите активную вакансию"));

        QSqlTableModel *SearchTableModel = new QSqlTableModel(this);
        SearchTableModel ->setTable(NameTableVacancy);
        SearchTableModel->select(); 

        QTableView *ActiveVacancy = new QTableView(&dlg);
        //отображение бд
        ActiveVacancy->setModel(SearchTableModel);
        ActiveVacancy->setSelectionBehavior(QAbstractItemView::SelectRows);  //Разрешаем выделение строк
        ActiveVacancy->setSelectionMode(QAbstractItemView::SingleSelection); //Устанавливаем режим выделения лишь одно строки в таблице

        QDialogButtonBox *btn_box = new QDialogButtonBox(&dlg);
        btn_box->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);

        connect(btn_box, &QDialogButtonBox::accepted, &dlg, &QDialog::accept);
        connect(btn_box, &QDialogButtonBox::rejected, &dlg, &QDialog::reject);

        QFormLayout *layout = new QFormLayout();
        layout->addRow(ActiveVacancy);
        layout->addWidget(btn_box);

        dlg.setLayout(layout);

        // В случае, если пользователь нажал "Ok".
        if(dlg.exec() == QDialog::Accepted)
        {
            qDebug()<<ActiveVacancy->currentIndex();

        }
2

Добрый день!

setGeometry к индексу модели в QTableView фактического отношения не имеет. Там возможно просто варнинги сыпятся по какой-то иной причине.

А чтобы узнать выделенный индекс, я думаю, что нужно обратиться в к модели выделения.

qDebug() << ActiveVacancy->selectionModel()->currentIndex()
0

извините, оно заработало

1

Comments

Only authorized users can post comments.
Please, Log in or Sign up
v
Jan. 17, 2019, 11:51 a.m.
vitalir12

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:20points,
  • Rating points-10
v
Jan. 17, 2019, 11:49 a.m.
vitalir12

C++ - Test 002. Constants

  • Result:50points,
  • Rating points-4
v
Jan. 17, 2019, 11:13 a.m.
vitalir12

C++ - Тест 003. Условия и циклы

  • Result:28points,
  • Rating points-10
Last comments
I
Jan. 16, 2019, 8:06 a.m.
IscanderChe

Заработало. Забыл model->select(); вписать.
I
Jan. 16, 2019, 8:02 a.m.
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
Jan. 16, 2019, 7:51 a.m.
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
Jan. 16, 2019, 7:43 a.m.
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Now discuss on the forum
Jan. 17, 2019, 1:40 p.m.
Михаиллл

Спасибо, заработало.Учту с переменными.
Jan. 17, 2019, 12:01 p.m.
Алексей Внуков

у меня просто есть отдельное поле с чекбоксамими какие колонки нужно отображать CheckBox { id: checkBox text: qsTr("some text") checked: true onC...
Jan. 15, 2019, 4:53 p.m.
Михаиллл

Спасибо, заработало.Но выдало обычный текст без форатирования HTML.Придется искать дальше
Jan. 15, 2019, 12:52 p.m.
BlinCT

Я же вам выше написал CLion умеет работать с ремоут машинами. И Qt так же собирает.
Join us in social networks

For registered users on the site there is a minimum amount of advertising