Qt как изменить название окна
Здравствуйте, пробую Qt все довольно дружественно, но начинаю приходить к выводу что с помощью Qtdesigner лучше ничего не рисовать. С помощью дизайнера сделал окно с меню, тулбары добавил программно, и решил имя главого окна поменять, открываю ui_mainwindow.h вижу в методе retranslateUi такую строку:
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
все понятно меняю на :
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "New window name", 0, QApplication::UnicodeUTF8));
Очищаю проект, пересобираю, получаю название окна «MainWindow». Захожу в дизайнер меня свойство «WindowTitle» c «MainWindow» на «New window name», пересобираю получаю нужное наименование главного окна. Вопрос, как программного тогда изменить наименование главного окна?
Re: Изменение наименования главного окна
| От: | agg |
| Дата: | 25.02.10 09:12 |
| Оценка: |
Здравствуйте, agg, Вы писали:
agg>Здравствуйте, пробую Qt все довольно дружественно, но начинаю приходить к выводу что с помощью Qtdesigner лучше ничего не рисовать. С помощью дизайнера сделал окно с меню, тулбары добавил программно, и решил имя главого окна поменять, открываю ui_mainwindow.h вижу в методе retranslateUi такую строку:
agg>
agg> MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8)); agg>
agg>все понятно меняю на :
agg>
agg> MainWindow->setWindowTitle(QApplication::translate("MainWindow", "New window name", 0, QApplication::UnicodeUTF8)); agg>
agg>Очищаю проект, пересобираю, получаю название окна «MainWindow». Захожу в дизайнер меня свойство «WindowTitle» c «MainWindow» на «New window name», пересобираю получаю нужное наименование главного окна. Вопрос, как программного тогда изменить наименование главного окна?
Ну понял это глючок такой, после того как один раз поменял свойство «WindowTitle» в дизайнере, программно стало менятсо без проблем. Колдовство да и только
Re: Изменение наименования главного окна
| От: | fdn721 | |
| Дата: | 25.02.10 11:06 | |
| Оценка: | +2 | |
Здравствуйте, agg, Вы писали:
agg>Здравствуйте, пробую Qt все довольно дружественно, но начинаю приходить к выводу что с помощью Qtdesigner лучше ничего не рисовать. С помощью дизайнера сделал окно с меню, тулбары добавил программно, и решил имя главого окна поменять, открываю ui_mainwindow.h вижу в методе retranslateUi такую строку:
agg>
agg> MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8)); agg>
agg>все понятно меняю на :
agg>
agg> MainWindow->setWindowTitle(QApplication::translate("MainWindow", "New window name", 0, QApplication::UnicodeUTF8)); agg>
agg>Очищаю проект, пересобираю, получаю название окна «MainWindow». Захожу в дизайнер меня свойство «WindowTitle» c «MainWindow» на «New window name», пересобираю получаю нужное наименование главного окна. Вопрос, как программного тогда изменить наименование главного окна?
Менять файл ui_mainwindow.h ни в коем случае нельзя. После сборки проекта все изменения сотрутся, а файл ui_mainwindow.h будет сгенерирование заново из mainwindow.ui.
Почитай лучше книжку какую про Qt.
Re[2]: Изменение наименования главного окна
| От: | Sheridan |
| Дата: | 25.02.10 16:54 |
| Оценка: |
Приветствую, fdn721, вы писали:
f> Менять файл ui_mainwindow.h ни в коем случае нельзя. После сборки проекта все изменения сотрутся, а файл ui_mainwindow.h будет сгенерирование заново из mainwindow.ui.
Как раз таки абсолютно пофиг — менять или нет. Результат одинаковый
f> Почитай лучше книжку какую про Qt.
Угу, или хотябы разобрать пару примеров из документации.
avalon 1.0rc3 rev 315, zlib 1.2.3
build date: 15.02.2010 00:26:03 MSK +03:00
Qt 4.6.1
Matrix has you.
Re: Изменение наименования главного окна
| От: | jerry_ru | |
| Дата: | 26.02.10 07:18 | |
| Оценка: | +1 | |
А вообще говоря Дизайнер подходит в оновном для быстрого создания UI, или для создания «Основных блоков».
Сколько ни пытался реализовывать меню и сигналы/слоты из дизайнера — всегда скатывался до ручного создания «сложного интерфейса» — гибкость на порядок выше.
Получить/изменить заголовок окна.
Необходимо получить текст заголовка активного окна, а затем его изменить. Каким образом это можно сделать в Linux’е на С++ или Python? В Windows я пользовался FindWindow, PostMessage и т.д.
А каким образом это сделать в Linux? Можете просто перечислить функции, а дальше как-нибудь разберусь.
def0e0 ★
13.01.05 18:13:56 MSK
Re: Получить/изменить заголовок окна.
Графическая библиотека какая?
Во многих это есть, можно просто в документации поискать window & title
anonymous
( 13.01.05 18:50:44 MSK )
Re: Получить/изменить заголовок окна.
в Х «активного окна», аналог ForegroundWindow нет.
Установить имя окна можно с помощью
void SetWindowName(Window id, char *name)
<
// Set window name.
carrot
( 13.01.05 19:03:58 MSK )
Ответ на: Re: Получить/изменить заголовок окна. от carrot 13.01.05 19:03:58 MSK
Re: Получить/изменить заголовок окна.
в GTK/GDK пользуй
Qt:
void QWidget::setCaption( const QString &caption )
carrot
( 13.01.05 19:10:57 MSK )
Ответ на: Re: Получить/изменить заголовок окна. от carrot 13.01.05 19:10:57 MSK
Re: Получить/изменить заголовок окна.
>В Windows я пользовался FindWindow, PostMessage и т.д.
если уж «врать», то по-честному . 😉
В Windows — это делается:
исключение составляет консоль:
// fetch current window title
GetConsoleTitle(pszOldWindowTitle, 1024);
// format a «unique» NewWindowTitle
wsprintf(pszNewWindowTitle,»%d/%d», GetTickCount(), GetCurrentProcessId());
// change current window title
SetConsoleTitle(pszNewWindowTitle);
// ensure window title has been updated
Sleep(40);
// look for NewWindowTitle
hwndFound=FindWindow(NULL, pszNewWindowTitle);
// restore original window title
ShowWindow(hwndFound, SW_RESTORE);
SetForegroundWindow(hwndFound);
SetConsoleTitle(«ROOT session»);
carrot
( 13.01.05 19:47:41 MSK )
Ответ на: Re: Получить/изменить заголовок окна. от carrot 13.01.05 19:47:41 MSK
Re: Получить/изменить заголовок окна.
Т.е. мне нужно две функции. Первая получает handle активного окна, вторая изменяет его заголовок.
PS:
>>В Windows я пользовался FindWindow, PostMessage и т.д.
>если уж «врать», то по-честному . 😉
Excusez. 🙂 Перепутал.
При помощи FindWindow я получал handle по имени заголовка окна.
hw:=FindWindow(‘Apollo — Main Window’,nil);
А с помощью PostMessage я посылал необходимое сообщение. Например такое PostMessage(hw,WM_CLOSE,0,0);
def0e0 ★
( 13.01.05 21:11:25 MSK ) автор топика
Ответ на: Re: Получить/изменить заголовок окна. от def0e0 13.01.05 21:11:25 MSK
Re: Получить/изменить заголовок окна.
> заголовок любого приложения
не понял. «любого», т.е. «чужого»?
—
Повторяю, в Х-ах «активного окна» — нет.
вернее — это зависит от windows managera.
Есть окно, в котором «фокус» — оно необязательно
должно быть «на верху».
carrot
( 14.01.05 11:33:40 MSK )
Ответ на: Re: Получить/изменить заголовок окна. от carrot 14.01.05 11:33:40 MSK
Re: Получить/изменить заголовок окна.
>не понял. «любого», т.е. «чужого»?
да
Оконный менеджер KDE.
>Есть окно, в котором «фокус» — оно необязательно
>должно быть «на верху».
Ну да. Я думаю под активным окном это и подразумевается. Т.е. окно с которым пользователь в данный момент времени работает. Вводит текст, нажимает на кнопки и т.д.
В общем к чему все это. Я хочу брать название текущей песни и исполнителя из XMMS, а затем вставлять это «дело» в заголовок программы с которой я работаю в текущий момент времени. Например запускаю я браузер, а в заголовке название песни которая сейчас играет. Открываю почтовый клиент, тогда заголовок браузера восстанавливаем, а почтового клиента изменяем и т.д. А вообще это можно сделать как plug-in к XMMS.
В Windows когда-то я подобное реализовывал (для Apollo).
Из всего этого мне непонятно только как изменить заголовок окна.
Поискал вчера в документации по Qt. Что-то даже и не пахнет. Может плохо «нюхал». 🙂
def0e0 ★
( 14.01.05 13:26:30 MSK ) автор топика
Ответ на: Re: Получить/изменить заголовок окна. от def0e0 14.01.05 13:26:30 MSK
Re: Получить/изменить заголовок окна.
Qt здесь не поможет (могу ошибаться), потому что Qt
работает с windows одного application.
Сам я этого не делал, но могу подсказать, куда копать.
— неким аналогом FindWindow в Х-ах является XQueryTree
http://tronche.com/gui/x/xlib/window-information/XQueryTree.html
который, позволяет «найти» любое окошко на десктопе.
— заголовок окна меняется с помощью XSetWMName
— заголовок окна берется с помощью XGetWMName
http://tronche.com/gui/x/xlib/ICC/client-to-window-manager/XGetWMName.html
> Я хочу брать название текущей песни и исполнителя из XMMS
как?
Одно из принципиальных отличий между Windows и Х-ами,
Х — это архитектура клиент-сервер, т.е. зная индетификатор окна
нельзя сказать, какому application оно принадлежит (могу ошибаться).
Продолжай задавать вопросы .
Одним из специалистов по Х-ам на форуме явяется lg
http://www.linux.org.ru/whois.jsp?nick=lg
Странно, что он пропустил эту тему. Попробуй свазаться с ним напрямую
Урок #4 – Всплывающие окна (QMessageBox)

Всплывающие окна невероятно полезны при разработке настольных приложений. В уроке мы научимся создавать и кастомизировать всплывающие окна на основе класса QMessageBox.
Видеоурок
Для создания всплывающих окон в PyQt 5 используется класс QMessageBox. Вам требуется создать объект на основе класса, добавить к нему характеристики и далее отобразить окно.
Пример кода для реализации окна представлен ниже:
msg = QMessageBox() msg.setWindowTitle("Название окна") msg.setText("Описание") msg.setIcon(QMessageBox.Warning) msg.exec_()
Qt как изменить название окна
На этом шаге мы перечислим значения, определяющие тип окна .
При использовании класса QWidget окно по умолчанию создается с заголовком, в котором расположены значок, при нажатии на который выводится оконное меню, текст заголовка и кнопки Свернуть , Развернуть и Закрыть . Указать другой тип создаваемого окна позволяет метод setWindowFiags() или параметр flags в конструкторе класса QWidget . Обратите внимание, что метод setWindowFiags() должен вызываться перед отображением окна. Формат метода:
setWindowFiags (Тип окна>)
- Widget — тип по умолчанию для класса QWidget ;
- Window — указывает, что компонент является окном, независимо от того, имеет он родителя или нет. Окно выводится с рамкой и заголовком, в котором расположены кнопки Свернуть , Развернуть и Закрыть . По умолчанию размеры окна можно изменять с помощью мыши;
- Dialog — диалоговое окно. Выводится с рамкой и заголовком, в котором расположены кнопки Справка и Закрыть . Размеры окна можно изменять с помощью мыши. Это значение по умолчанию для класса QDialog . Пример указания типа для диалогового окна: window.setWindowFlags(QtCore.Qt.Dialog) ;
- Sheet и Drawer — окна в стиле Apple Macintosh ;
- Popup — указывает, что окно представляет собой всплывающее меню. Оно выводится без рамки и заголовка и, кроме того, может отбрасывать тень. Изменить размеры окна с помощью мыши нельзя;
- Tool — сообщает, что окно представляет собой панель инструментов. Оно выводится с рамкой и заголовком (меньшем по высоте, чем обычное окно), в котором расположена кнопка Закрыть . Размеры окна можно изменять с помощью мыши;
- ToolTip — указывает, что окно представляет собой всплывающую подсказку. Оно выводится без рамки и заголовка. Изменить размеры окна с помощью мыши нельзя;
- splashScreen — сообщает, что окно представляет собой заставку. Оно выводится без рамки и заголовка. Изменить размеры окна с помощью мыши нельзя. Это значение по умолчанию для класса QSplashScreen ;
- Desktop — указывает, что окно представляет собой рабочий стол. Оно вообще не отображается на экране;
- SubWindow — сообщает, что окно представляет собой дочерний компонент, независимоот того, имеет он родителя или нет. Выводится оно с рамкой и заголовком (меньшим по высоте, чем у обычного окна), но без кнопок. Изменить размеры окна с помощью мыши нельзя;
- ForeignWindow — указывает, что окно создано другим процессом;
- CoverWindow — окно, представляющее минимизированное приложение на некоторых мобильных платформах.
Определить тип окна из программы позволяет метод windowType() .
MSWindowsFixedSizeDialogHint — запрещает изменение размеров окна. Кнопка Развернуть в заголовке окна становится неактивной;
window.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowTitleHint)
Получить все установленные флаги из программы позволяет метод windowFlags() .
На следующем шаге мы рассмотрим изменение и получение размеров окна .