Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spectre71 от Август 02, 2009, 14:59



Название: QToolBar. Как восстановить расположение?
Отправлено: spectre71 от Август 02, 2009, 14:59
Есть несколько movable QToolBar.
Пользователь может их претаскивать.
Как сохранить и восстановить расположение тулбаров?


Название: Re: QToolBar. Как восстановить расположение?
Отправлено: pastor от Август 02, 2009, 15:23
Если тулбар размещен на QMainWindow, то:

Цитировать
QByteArray QMainWindow::saveState ( int version = 0 ) const
Saves the current state of this mainwindow's toolbars and dockwidgets.


Название: Re: QToolBar. Как восстановить расположение?
Отправлено: spectre71 от Август 02, 2009, 15:57
Если тулбар размещен на QMainWindow, то:

Цитировать
QByteArray QMainWindow::saveState ( int version = 0 ) const
Saves the current state of this mainwindow's toolbars and dockwidgets.
Спасибо!
Получается такая фигня :)
Код
C++ (Qt)
char* store = saveState().toBase64().data();
....
....
restoreState(QByteArray::fromBase64(QByteArray(store)));

store  - можем спокойно сохранять и восстанавливать.
Я сохраняю конфигурации в XML, поэтому удобнее получать base64 строку.



Название: Re: QToolBar. Как восстановить расположение?
Отправлено: ритт от Август 02, 2009, 18:56
а конфиг читаешь/пишешь через qsettings?


Название: Re: QToolBar. Как восстановить расположение?
Отправлено: Rcus от Август 02, 2009, 19:00
[offtop]
Чувствую еще придет ваш день разбирать соверешенно левые трейсы из-за dangling pointers
[/offtop]


Название: Re: QToolBar. Как восстановить расположение?
Отправлено: spectre71 от Август 02, 2009, 19:50
а конфиг читаешь/пишешь через qsettings?
Нет. Свои классы.


Название: Re: QToolBar. Как восстановить расположение?
Отправлено: spectre71 от Август 02, 2009, 20:00
[offtop]
Чувствую еще придет ваш день разбирать соверешенно левые трейсы из-за dangling pointers
[/offtop]
Я там схематично написал, дабы просто обозначить тип char*.
На самом деле у меня так:
ini.controls.wmain.dock_state = saveState().toBase64().data();
а dock_state имеет тип sbw::String, похож на QString только не unicode