Page 1 of 1
snapshot 0.5.2 от 25.03.2016
PostPosted: 25 Mar 2016, 17:42
by WxMaper
PQEngineCore QSettings:
- Удалена перегрузка методов variant value(string $key, variant $default) и
void setValue(string $key, variant $value). Теперь все значения (кроме ключа) передаются с типом QVariant, строки сохраняются в QByteArray (позволяет сохранять бинарные данные).
PQEngineWidgets QMenu:
- Добавлено свойство string title [ string title() | setTitle(string $title) ];
- Добавлено свойство bool empty [ bool isEmpty() | - ];
- Добавлен метод void setIcon(QIcon $icon). Для использования потребуется расширение PQEngine DrawKit;
- Добавлен метод void exec(int $x, int $y);
- Добавлен метод void popup(int $x, int $y);
PQEngineWidgets QMainWindow:
- Добавлен метод raw saveState(int $version = 0);
- Добавлен метод bool restoreState(raw $state, int $version = 0);
- Добавлен метод raw saveGeometry();
- Добавлен метод bool restoreGeometry(raw $geometry);
- Добавлен метод void setTabPosition(int $areas, int $tabPosition);
- Добавлен метод void tabifyDockWidget(QDockWidget $first, QDockWidget $second);
- Добавлен метод void splitDockWidget(QDockWidget $first, QDockWidget $second, int $orientation);
- Добавлен метод objectArray tabifiedDockWidgets(QDockWidget $dockwidget);
PQEngineWidgets QSplitter:
- Новый класс, доступны все методы и свойства оригинального класса.
Скачать:
Установка:
Скопировать в папку с установленным PQBuilder, запустить самораспаковывающийся архив и извлечь с заменой файлов.
Re: snapshot 0.5.2 от 26.03.2016
PostPosted: 25 Mar 2016, 18:34
by WxMaper
Пример сохранения и восстановления состояния окна:
- Code:
class MainWindow extends QMainWindow {
// путь к файлу настроек
static $settingsFileName = __DIR__ . "/settings.ini";
public function __construct() {
parent::__construct();
$this->restoreWindow();
$this->initComponents();
$this->initConnections();
}
/**
* Восстановление состояния окна
* @return void
*/
private function restoreWindow() {
if(file_exists(self::$settingsFileName)) {
// загружаем сохранённое состояние
$settings = new QSettings(self::$settingsFileName, QSettings::IniFormat);
$geometry = $settings->value("geometry", "");
$state = $settings->value("state", "");
$this->restoreGeometry($geometry);
$this->restoreState($state);
}
}
/**
* Инициализация компонентов
* @return void
*/
private function initComponents() {
// для того чтобы сохранение состояний работало корректно,
// виджеты должны иметь уникальные имена.
// Префикс "_1" может быть заменён на любой другой
// и совершенно необязателен, если у вас всего один экземпляр QMainWindow
$this->objectName = "mainWindow_1";
$this->centralWidget = new QWidget;
// доквиджеты тоже должны быть именованы
$dock = new QDockWidget("ДокВиджет", $this);
$dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
$dock->objectName = "dockWidget_1";
$this->addDockWidget(Qt::RightDockWidgetArea, $dock);
}
/**
* Инициализация связей сигналов со слотами
* @return void
*/
private function initConnections() {
// на событие закрития окна устанавливаем
// функцию сохранения состояния
$this->onClose = function() {
$settings = new QSettings(self::$settingsFileName, QSettings::IniFormat);
$settings->setValue("geometry", self::saveGeometry());
$settings->setValue("state", self::saveState());
};
}
}
$mainWindow = new MainWindow();
$mainWindow->show();
qApp::exec();
После повторного открытия, главное окно восстановит свои размеры и позицию.
Re: snapshot 0.5.2 от 26.03.2016
PostPosted: 25 Mar 2016, 21:56
by rinart73
Обнаруженные баги:
- QSplitter-а все-таки нет:
- Code:
Uncaught Error: Class 'QSplitter' not found
- Начиная со 2 запуска начинает появляться такое (PQBuilder при этом не крашится):
- Code:
Cannot open translation file `D:/Program Files (x86)/PQBuilder/translations/ !.xml`
Вопрос:
Если создать QMainWindow, насоздавать в нем кучу виджетов, layout-ов, вложенностей разных, а затем удалить все переменные, ссылающиеся на эти объекты, они останутся.
А вот если создать
QMenuBar, заполнить его
QMenu, а затем удалить все ссылки на QMenu, их как не бывало.
Баг или норма?
Re: snapshot 0.5.2 от 26.03.2016
PostPosted: 26 Mar 2016, 05:33
by WxMaper
[bquote=rinart73|/viewtopic.php?f=18&t=22&p=146#p146|25 мар 2016, 21:56]Если создать QMainWindow, насоздавать в нем кучу виджетов, layout-ов, вложенностей разных, а затем удалить все переменные, ссылающиеся на эти объекты, они останутся.[/bquote]
Всё правильно, объекты получившие родителей не удаляются автоматически. Когда объект отправляется в компоновщик, он автоматически получает родителя, поэтому не уничтожается вслед за удалением переменной.
На счет QMenu сказать ничего не могу, нужно код посмотреть.
Re: snapshot 0.5.2 от 26.03.2016
PostPosted: 26 Mar 2016, 10:06
by zazaka
Re: snapshot 0.5.2 от 26.03.2016
PostPosted: 26 Mar 2016, 10:45
by WxMaper
zazaka, угу :) сегодня будет исправленный снап
Re: snapshot 0.5.2 от 25.03.2016
PostPosted: 27 Mar 2016, 03:11
by rinart73
Ок, по поводу:
- Code:
Cannot open translation file `D:/Program Files (x86)/PQBuilder/translations/ !.xml`
Если кто столкнется, удалите pqbuilder.ini из папки, запустите PQBuilder, а после того, как файл снова появится, поменяйте в нем язык на ru.
Или просто замените строчку с language на language=ru
Re: snapshot 0.5.2 от 25.03.2016
PostPosted: 28 Mar 2016, 07:05
by ArtMares
[bquote=rinart73|/viewtopic.php?f=18&t=22&p=161#p161|27 мар 2016, 03:11]Если кто столкнется, удалите pqbuilder.ini из папки, запустите PQBuilder, а после того, как файл снова появится, поменяйте в нем язык на ru.
Или просто замените строчку с language на language=ru[/bquote]
Вообще на самом деле старнная ошибка так как я посмотрел код отвечающий за язык в PQBuilder, там все хорошо.
У кого нибудь еще возникала данная ошибка?
Re: snapshot 0.5.2 от 25.03.2016
PostPosted: 28 Mar 2016, 07:53
by WxMaper
[bquote=ArtMares|/viewtopic.php?f=18&t=22&p=169#p169|28 мар 2016, 07:05]У кого нибудь еще возникала данная ошибка?[/bquote]
Да могла быть, я там в очередной раз подправил работу со строками, не совсем удачно получилось. В новом снапшоте эта ошибка должна быть исправлена.
Если содержимое
pqbuilder.ini у вас будет таким:
- Code:
[General]
language=ru
то все хорошо. А если что-то вроде такого:
- Code:
[General]
language=@QByteArray(ru)
то нужно скачать последний снап и удалить pqbuilder.ini