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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вывести из QMap в tableWidget?  (Прочитано 4892 раз)
gertvaQT
Гость
« : Ноябрь 10, 2013, 23:17 »

Добрый день.
Есть  QMap<QString, int> *map = new QMap<QString, int>();
Не могу вывести в tableWidget. В mainwindow.срр пытаюсь вывести так:

void MainWindow::on_goButton_clicked()
{
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(0);
    for (int i=0; i<map->size();i++)
    {
        ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
        QTableWidgetItem *newItem = new QTableWidgetItem();
        newItem->setText(map->key());
        ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 0, newItem);
        newItem = new QTableWidgetItem();
        newItem->setText(map->value());
        ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 1, newItem);
    }
}

Ругается на  newItem->setText(map->key()); и  newItem->setText(map->value());
Пишет : C:\Qt\Qt5.1.1\Tools\QtCreator\bin\kursMap\mainwindow.cpp:61: ошибка: no matching function for call to 'QMap<QString, int>::key()'
          newItem->setText(map->key());
                                   
Как достать в этом случае содержимое QMap? Заранее благодарен.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Ноябрь 10, 2013, 23:40 »

Читайте документацию.

Цитировать
If you want to navigate through all the (key, value) pairs stored in a QMap, you can use an iterator. QMap provides both Java-style iterators (QMapIterator and QMutableMapIterator) and STL-style iterators (QMap::const_iterator and QMap::iterator). Here's how to iterate over a QMap<QString, int> using a Java-style iterator:
Код:
QMapIterator<QString, int> i(map);
while (i.hasNext()) {
    i.next();
    cout << i.key() << ": " << i.value() << endl;
}
Here's the same code, but using an STL-style iterator this time:
Код:
QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
    cout << i.key() << ": " << i.value() << endl;
    ++i;
}
The items are traversed in ascending key order.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
gertvaQT
Гость
« Ответ #2 : Ноябрь 11, 2013, 21:28 »

Спасибо. Получилось максимум так. В таком виде запускается, но при нажатии на goButton программа виснет намертво.  Что можно сделать?

void MainWindow::on_goButton_clicked()
{
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(0);

    QMap<QString, int>::const_iterator i = map->constBegin();
    while (i != map->constEnd()) {
        ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
        QTableWidgetItem *newItem = new QTableWidgetItem();
        newItem->setText(i.key());
        ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 0, newItem);
        newItem = new QTableWidgetItem();
        QString str;
        str = i.value();
        newItem->setText(str);
        ui->tableWidget->setItem(ui->tableWidget->rowCount() - 1, 1, newItem);

    }
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Ноябрь 11, 2013, 22:06 »

дописать в конце цикла ++i
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gertvaQT
Гость
« Ответ #4 : Ноябрь 11, 2013, 23:23 »

kibsoft, kambala огромное спасибо, дай Вам бог здоровья.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #5 : Ноябрь 12, 2013, 14:32 »

За такие дела точно должен дать Улыбающийся
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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