Russian Qt Forum
Сентября 09, 2025, 13:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Использование MDI совместно с Qt Script
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Использование MDI совместно с Qt Script (Прочитано 4463 раз)
vladmailbox
Гость
Использование MDI совместно с Qt Script
«
:
Января 24, 2010, 12:01 »
Хочу написать MDI приложение в котором каждое окно представляет собой скрипт. Для открытия нового окна использую код:
void MDIMainWindow::slotNewDocument()
{
int num = _pma->subWindowList().size();
QScriptEngine engine;
QString scriptFileName("../calc.js");
QFile scriptFile(scriptFileName);
scriptFile.open(QIODevice::ReadOnly);
engine.evaluate(scriptFile.readAll(), scriptFileName);
scriptFile.close();
QUiLoader loader;
QFile uiFile("../calc.ui");
uiFile.open(QIODevice::ReadOnly);
QWidget *ui = loader.load(&uiFile, this);
uiFile.close();
QMdiSubWindow * mdiWnd = _pma->addSubWindow(ui);
ui->setWindowTitle(tr("Документ %1").arg(num+1));
ui->setParent(mdiWnd);
QScriptValue ctor = engine.evaluate("Calculator");
QScriptValue scriptUi = engine.newQObject(ui, QScriptEngine::AutoOwnership);
QScriptValue calc = ctor.construct(QScriptValueList() << scriptUi);
ui->show();
}
И тестовый скрипт:
function Calculator(ui)
{
this.ui = ui;
with (ui) {
bt1.text = "Button1";
bt2.text = "Button2";
bt1.clicked.connect(this, this.btClicked);
bt2.clicked.connect(this, this.btClicked);
}
};
Calculator.prototype.btClicked = function()
{
__qt_sender__.text = "Clicked";
};
В результате окно с нужной формой открывается, скрипт имеет доступ к елементам формы, но события не вызываются. Может кто знает в чем причина?
Записан
ax
Чайник
Offline
Сообщений: 60
Re: Использование MDI совместно с Qt Script
«
Ответ #1 :
Января 25, 2010, 12:15 »
QScriptEngine engine; // Это у тебя локальная переменная, которая погибнет после выполнения MDIMainWindow::slotNewDocument()
p.s. а почему не один QScriptEngine на все?
Записан
vladmailbox
Гость
Re: Использование MDI совместно с Qt Script
«
Ответ #2 :
Января 25, 2010, 12:36 »
Спасибо, заработало.
> p.s. а почему не один QScriptEngine на все?
Не глобальный, т.к. несколько скриптов должно одновременно выполнятся в разных окнах.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...