Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: bezzil от Сентябрь 25, 2008, 11:43



Название: QTableWidget не рисуется таблица
Отправлено: bezzil от Сентябрь 25, 2008, 11:43
Здраствуйте,
я новенький в Qt библиотеках, помогите пожалуйста со следующей ситуацией.
В программе нада сделать что бы в таблице (QTableWidget ) был представлен весь список файлов диска С.
Стоит Qt 4.4.0 инетгрированный в VS 2005.
Имею следующий код.

Цитировать
int main(int argc, char *argv[])
{
   
   
   QApplication a(argc, argv);
   Table w;
   QDir dir;
   dir.cd("C:/");
   QStringList FileList=dir.entryList();
   QString CurrentDir="C:/";

   QTableWidget *wTable = new QTableWidget;

   QTableWidgetItem *dirItem = new QTableWidgetItem(CurrentDir);
   
   wTable->setItem(0,0,dirItem);

   for (int i=1;i<dir.count();i++)
   {
      QTableWidgetItem *fileItem = new QTableWidgetItem(FileList);
      wTable->setItem(i,2,fileItem);
   }
   QStringList labels;
   labels<<"Disk"<<"Catalog"<<"Catalog/Catalog";
   wTable->setHorizontalHeaderLabels(labels);
   wTable->setMaximumSize(350,500);
   wTable->setMinimumSize(350,500);
   wTable->setWindowTitle("Learninng about Tables");
   wTable->show();
   
   return a.exec();
}

В резултате создаётся окно, но в нём ничего не нарисованно. Итемы вроде бы добавляются и на сколько я понял из примеров задавать колливо строк и столбцов отдельно не нада.
Вопрос такой, как победить таблицу и заставить её появится со всеми итемами дабавленными в неё.

Разабрался, я действительно нуб, с начала нада было задать размеры таблицы, а потом уже добовлять в неё итемы, почему то я решил что это КуТе сделает за меня ...

И как из QDir вытащить название диска в Windows, dirNames() возвращает пустую строку, а что то вроде diskName() я не нашёл.
Заранее спасиба за помощь.


Название: Re: QTableWidget не рисуется таблица
Отправлено: spirit от Сентябрь 25, 2008, 12:00
> Итемы вроде бы добавляются и на сколько я понял из примеров задавать колливо строк и столбцов отдельно не нада.
как это не надо? как раз таки и надо
пример из ассистанта
Код:
tableWidget = new QTableWidget(this);
tableWidget->setRowCount(10);
tableWidget->setColumnCount(5);


Название: Re: QTableWidget не рисуется таблица
Отправлено: bezzil от Сентябрь 25, 2008, 12:04
спасиба спирит, мне нада было быть внимательнее к документации.
Остался вопрос как получить название диска из QDir и возможно ли это.


Название: Re: QTableWidget не рисуется таблица
Отправлено: iamfomik от Сентябрь 25, 2008, 12:05
Цитировать
И как из QDir вытащить название диска в Windows, dirNames() возвращает пустую строку, а что то вроде diskName() я не нашёл.


QDir::rootPath ()


Название: Re: QTableWidget не рисуется таблица
Отправлено: spirit от Сентябрь 25, 2008, 12:11
да и еще, про получение списка дисков
Цитировать
QFileInfoList QDir::drives ()   [static]
Returns a list of the root directories on this system.
On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc. On other operating systems, it returns a list containing just one root directory (i.e. "/").
See also root() and rootPath().

примерчег
Код:
foreach (QFileInfo fileInfo, QDir::drives())
           qDebug() << fileInfo.filePath();


Название: Re: QTableWidget не рисуется таблица
Отправлено: lit-uriy от Сентябрь 25, 2008, 14:06
В программе нада сделать что бы в таблице (QTableWidget ) был представлен весь список файлов диска С.
Лучше это сделать через Модель/представление.

Тем более что такой пример есть у тролей готовый. См. %QTDIR%\examples\itemviews\dirview


Название: Re: QTableWidget не рисуется таблица
Отправлено: Murru от Август 17, 2009, 16:42
> Итемы вроде бы добавляются и на сколько я понял из примеров задавать колливо строк и столбцов отдельно не нада.
как это не надо? как раз таки и надо
пример из ассистанта
Код:
tableWidget = new QTableWidget(this);
tableWidget->setRowCount(10);
tableWidget->setColumnCount(5);

А как быть в том случае, если заранее неясно какого размер получится таблица?