Как заставить QWizard загружать значение из файла при нажатии следующей кнопки при запуске?

У меня возникла ситуация, когда мне нужно отобразить разделы выбранного диска. Я выбираю диск в классе DiskPage и записываю его раздел в файл. Теперь я должен прочитать этот файл в классе PartitionPage. Что радует, на странице разделов функция getPartition используется для получения разделов. Но он читает файл при запуске (когда он пуст), а не когда содержимое записывается в файл, и нажимается следующая кнопка.

void PartitionPage::getPartitions(){

//partitionTable->clear();
int partitions_count = 0;
QFile file("/tmp/partitions.txt");

if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;

while (!file.atEnd()) {
        QString line = file.readLine();            
        partitions_count++;
        //qDebug() << line;
        showPartitionsTable(line, partitions_count);
    }
file.close();
file.remove();
}


void PartitionPage::showPartitionsTable(QString line, int numberOfPartitions)
{
partitionTable->repaint();
//int row = 0;
QStringList partitions = line.split(":");
qDebug() << numberOfPartitions;

//qDebug() << partitions.count();

if(partitionTable->rowCount() < (numberOfPartitions + 1))
    partitionTable->setRowCount(numberOfPartitions);

// we  want to dispay first 7 columns only
//if(partitionTable->columnCount() < partitions.size())
//    partitionTable->setColumnCount( partitions[0].size() );

// Set Header Label Texts Here
// set the columncount to 7 as we only want to display first 7 column
partitionTable->setColumnCount(7);
partitionTable->setColumnWidth(0, 120);
partitionTable->setColumnWidth(1, 120);
partitionTable->setColumnWidth(2, 120);
partitionTable->setColumnWidth(3, 120);
partitionTable->setColumnWidth(4, 120);
partitionTable->setColumnWidth(5, 120);
partitionTable->setColumnWidth(6, 120);

partitionTable->setHorizontalHeaderLabels(QString("Partition; Start Sector; End Sector; Total Sectors; Partition Size; Partition ID; File System; ").split(";"));
for( static int row = 0; row < partitionTable->rowCount(); ++row ){
    for( int column = 0; column < partitionTable->columnCount(); ++column ){
        newItem = new QTableWidgetItem();
        newItem->setText(partitions.at(column));
        partitionTable->setItem(row, column, newItem);
        newItem->setTextAlignment(Qt::AlignCenter);
    }
}

partitionTable->setAlternatingRowColors(true);
partitionTable->setSelectionBehavior(QAbstractItemView::SelectRows);
partitions.clear();

}

0 ответов

Другие вопросы по тегам