Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Yegor от Август 22, 2012, 13:59



Название: QTreeView::setColumnWidth
Отправлено: Yegor от Август 22, 2012, 13:59
Здравствуйте!
Когда я в диалоге размещаю QTreeView и для каждой колонки делаю setColumnWidth, то в результате ширины столбцов не меняются, остаются по умолчанию (headerDefaultSectionSize).
Вопрос, как все же изменить ширины столбцов программно?


Название: Re: QTreeView::setColumnWidth
Отправлено: QtCoder от Август 22, 2012, 14:06
Здравствуйте!
Когда я в диалоге размещаю QTreeView и для каждой колонки делаю setColumnWidth, то в результате ширины столбцов не меняются, остаются по умолчанию (headerDefaultSectionSize).
Вопрос, как все же изменить ширины столбцов программно?
Если попытаться выставить ширину до того как выставил headerData получим этот эффект.


Название: Re: QTreeView::setColumnWidth
Отправлено: Yegor от Август 22, 2012, 14:09
Объясните пожалуйста, что значить выставить headerData?


Название: Re: QTreeView::setColumnWidth
Отправлено: QtCoder от Август 22, 2012, 14:13
Объясните пожалуйста, что значить выставить headerData?

Определить данные заголовков в модели.
в общем сначала надо поставить модель setModel() а затем менять ширину колонок. В модели есть headerData - виртуальный метод который отвечает за данные заголовков. Он может быть уже переопределен если используется стандартная модель вроде QsqlTableModel, а может и самому надо определить.


Название: Re: QTreeView::setColumnWidth
Отправлено: Yegor от Август 22, 2012, 14:21
А можно ли ширину колонок менять из представления (QTreeView), а не из модели?


Название: Re: QTreeView::setColumnWidth
Отправлено: QtCoder от Август 22, 2012, 14:35
А можно ли ширину колонок менять из представления (QTreeView), а не из модели?

Минимальный кусок кода мог бы прояснить картину, что вы делаете.


Название: Re: QTreeView::setColumnWidth
Отправлено: Yegor от Август 22, 2012, 14:41
Конструктор диалогового окна:

Код:
    
    ui.setupUi(this);

    //Init model.
    m_pModel = new WatchDogModel(this);

    //Set model to view.
    ui.treeView_WatchDog->setModel(m_pModel);

    //Resize columns
    ui.treeView_WatchDog->setColumnWidth(0, 135);
    ui.treeView_WatchDog->setColumnWidth(1, 135);
    ui.treeView_WatchDog->setColumnWidth(2, 200);

И ни какого эффекта от установки ширин столбцов.


Название: Re: QTreeView::setColumnWidth
Отправлено: QtCoder от Август 22, 2012, 15:28
Конструктор диалогового окна:

Чот ничо не могу сказать. Кастую Вереса в тему.


Название: Re: QTreeView::setColumnWidth
Отправлено: Bepec от Август 22, 2012, 15:42
Кто меня призвал???? Кому морду на... леденец дать? :D

Только что проверил - setColumnWidth работает так как надо. (колонки заданной ширины.)

При установке/удалении модели значения сбрасываются. (так и надо.)

PS приводи свой код полностью, а ещё лучше выложи минимальный компилируемый пример в архивчике.