Перейти к содержимому

Qt как изменить название окна

  • автор:

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)

Урок #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() .

На следующем шаге мы рассмотрим изменение и получение размеров окна .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *