На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Qt
    1. Можно ли как-то вытянуть дочерний виджет за переделы родительского? Конкретизируя - вытянуть закладки QTabWidget за пределы главного окна.
    2. Можно ли как-то убрать тайтл полностью ? Оставить тайтл, но убрать иконку/кнопки закрыть(свернуть) ?
    3. Можно ли как-то регулировать поведение приложения в свернутом состоянии ?(появление значка в трее, исчезновение значка из панели задач, реагирование на контрольные клавиши)
    4. Подскажите плз где в QDevelop установить переменные окружения QMAKESPEC и т.д. что бы все нормально компилилось. По умолчанию сразу после инсталла никак не хочет, а запускать постоянно через консоль уже надоело.
    5. Можно как-то быстро определить позицию курсора относительно других объектов ? Я имею в виду реакцию приложения в случае если курсор наведется на объект(в действительности рисунок, нарисованный на чем-то. Неправильной формы. трудно конечно это назвать объектом, но все же...) неправильной, сложной формы. Допустим на эллипс нарисованный на QPainter. Или без перехвата события и дальнейшей ручной обработки не обойтись ?
    6. Если ли стандартный виджет(и если нет, то подскажите реализацию) для окна чата? Окно должно отобрать не только текст, но и картинки(смайлики).
    7. Искал, не нашел - есть ли функции расформирования менеджеров компоновок ? Требуется динамически перекомпоновать виджеты.
    8. Собрал проэкт в QDevelop. Запускаю екзешник вне его. Появляется ошибка "Приложению не удалось запуститься, поскольку mingwm.dll не найден. Повторная установка приложения может исправить эту проблему." Скомпилил простой пример "Hello world!" Тоже самое. Если запускать через QDevelop все нормально. Для чего используется эта библиотека ? Как исправить?
    9. Можно ли как-то получить QTabWidget с возможностью вывода закладок на всех 4х сторонах, а не одной ? Именно один виджет, а не систему из 4х наложенных друг на друга виджетов.
    10. Есть QWidget. На нем с применением менеджеров компоновок размещены QPushButton, QLabel и QLineEdit. Что бы все создавать одним оператором всю эту композицию нужно запихнуть в класс. Получится что-то вроде
    ExpandedWrap disabled
      class MyClass : public QWidget
      {
          Q_OBJECT
      public:
          MyClass(QWidget *parent);
          ...
      private:
      //какие-то поля и методы
      //слоты и сигналы
      };

    С реализацией расстановки всех остальных виджетов в конструкторе.
    Основная задача состоит в том что бы упаковать этот класс в библиотеку и в программе динамически ее распаковать. Помогите с хедерфайлом интерфейса класса и части кода главной программы где плагин распаковывается и создается один экземпляр запакованого класса. Иными словами что бы после прочтения dll можно было работать, как если бы он находился в программе:
    MyClass a;
    a.show();

    Во всех примерах которые я нашел все классы внутри "нематериальные"(их работу мы не видим. мы видим результат их вычислений и т.д.). А здесь когда основные функции не мы реализовываем, а наследуются от QWidget возникают проблемы - наследуемые функции не видны. Ошибка идет еще на этапе компиляции.
    Сообщение отредактировано: Tam-Tam -
      1. Да. Это обычные виджеты.
      3. Да - QSystemTrayIcon.
      5. Вроде можно.
      6. Да - QTextBrowser.
      7. Добавляй нужные виджеты к другим менеджерам и они автоматически "переедут" туда. Старые менеджеры просто удали.
        Цитата archimed7592 @
        1. Да. Это обычные виджеты.

        1. QDesigner сопротивляется. При написании кода вручную виджеты ведут себя по-другому?
        Сообщение отредактировано: Tam-Tam -
          Цитата Tam-Tam @
          1. Можно ли как-то вытянуть дочерний виджет за переделы родительского? Конкретизируя - вытянуть закладки QTabWidget за пределы главного окна.

          ээээ... Зачем? :blink:
          Цитата Tam-Tam @
          4. Подскажите плз где в QDevelop установить переменные окружения QMAKESPEC и т.д. что бы все нормально компилилось. По умолчанию сразу после инсталла никак не хочет, а запускать постоянно через консоль уже надоело.

          Добавляешь в системные переменные окружения
            Цитата Tam-Tam @
            5. Можно как-то быстро определить позицию курсора относительно других объектов ? Я имею в виду реакцию приложения в случае если курсор наведется на объект(в действительности рисунок, нарисованный на чем-то. Неправильной формы. трудно конечно это назвать объектом, но все же...) неправильной, сложной формы. Допустим на эллипс нарисованный на QPainter. Или без перехвата события и дальнейшей ручной обработки не обойтись ?

            рисовать нужно на QGraphicsView, а фигура должна быть унаследована от QGraphicsItem. В этом случае сама фигура, наследованная от QGraphicsItem, может приниматься события от мышки и клавы.
              Цитата sploid @
              рисовать нужно на QGraphicsView, а фигура должна быть унаследована от QGraphicsItem. В этом случае сама фигура, наследованная от QGraphicsItem, может приниматься события от мышки и клавы.

              5. Допустим для нарисованного пойдет. А для пиксельных рисунков читаемых из файла? Можно как-то задать контур в пределах которого будет реакция ?

              -Added
              Цитата cozzzy @
              ээээ... Зачем? :blink:

              1. Вот с чем, а с мотивацией у меня вопросов нет ) Мне бы найти как можно сделать, а где применить - я найду.

              Цитата cozzzy @
              Добавляешь в системные переменные окружения

              4. Подробнее можно ? Где клацнуть и что ввести.
                1. Насколько я знаю, то в винде, чаилд не может вылезти за парента.
                2. Можно.
                Что бы убрать тайтл, нужно у окна задать нужные флаги из этих flags Qt::WindowFlags.
                Что бы убрать кнопки свернуть и т.д., нужно задать Qt::WindowTitleHint.
                А вообще для подобных экспериментов есть демка. В QtDemo, раздел Widgets, программа Window Flags
                4. Какая ОСь?
                5. для этого нужно использовать QGraphicsPixmapItem.
                  Цитата sploid @
                  4. Какая ОСь?

                  Винда.

                  8. Собрал проэкт в QDevelop. Запускаю екзешник вне его. Появляется ошибка "Приложению не удалось запуститься, поскольку mingwm.dll не найден. Повторная установка приложения может исправить эту проблему." Скомпилил простой пример "Hello world!" Тоже самое. Если запускать через QDevelop все нормально. Для чего используется эта библиотека ? Как исправить?
                    что бы исправить? в переменные добавить путь, где лежит эта дллка.
                    Открываешь свойства "Мой компьютер", далее закладка "дополнительно", кнопка "переменные среды".

                    Там создаешь новую переменную "QMAKESPEC", и ее значение ставишь "win32-g++".

                    потом в переменную "PATH" добавляешь путь где лежит дллка mingwm.dll ( наверно C:\msys\mingw32\bin )
                    Сообщение отредактировано: sploid -
                      Цитата sploid @
                      5. для этого нужно использовать QGraphicsPixmapItem.

                      Найдется хоть один пример реализации того что я описал ? Или схожей задачи ? Или использования QGraphicsPixmapItem ?
                        Цитата Tam-Tam @
                        Цитата sploid @
                        5. для этого нужно использовать QGraphicsPixmapItem.

                        Найдется хоть один пример реализации того что я описал ? Или схожей задачи ? Или использования QGraphicsPixmapItem ?

                        в QtDemo раздел Graphics View, пример Ported Canvas. Там используется QGraphicsPixmapItem.

                        Вообще я сейчас пишу софтину, которая использует их систему рисования и все довольно удобно.
                        Сообщение отредактировано: sploid -
                          Цитата Tam-Tam @
                          QDesigner сопротивляется. При написании кода вручную виджеты ведут себя по-другому?

                          С дизайнером вообще отдельный разговор - там есть такая фишка как promote widget.
                          При написание вручную ты можешь делать кое-что, что не можешь сделать в дизайнере. Я вот только, после твоих уточняющих вопросов начинаю сомневаться в том, что я действительно понимаю что именно тебе нужно...
                            Цитата archimed7592 @
                            При написание вручную ты можешь делать кое-что, что не можешь сделать в дизайнере. Я вот только, после твоих уточняющих вопросов начинаю сомневаться в том, что я действительно понимаю что именно тебе нужно...

                            Вопрос возник именно из-за дизайнера. Поскольку он не позволяет такого. Хотя делать все буду вручную.
                            Сообщение отредактировано: Tam-Tam -
                              Цитата Tam-Tam @
                              Поскольку он не позволяет такого.

                              Гм... Ещё раз: КАКОГО? Что именно ты хочешь сделать? Какой результат ты хочешь получить?
                                Цитата archimed7592 @
                                Гм... Ещё раз: КАКОГО? Что именно ты хочешь сделать? Какой результат ты хочешь получить?

                                Хочу что бы закладки QTabWidget вылезли за рамки родительского виджета.
                                  Tam-Tam, ЭТО ОБЫЧНЫЙ ВИДЖЕТ. Возьми пустой виджет с панельки слева, перетяни на форму и будет тебе счастье.

                                  Добавлено
                                  Только не говори, что тебе "удобнее" накидывать контролы на таб-виджет, а потом вытаскивать всё целиком на форму. Это бред.
                                    Цитата archimed7592 @
                                    Tam-Tam, ЭТО ОБЫЧНЫЙ ВИДЖЕТ. Возьми пустой виджет с панельки слева, перетяни на форму и будет тебе счастье

                                    Вытяни. Перемести так что бы он частично вылазил за границу формы. Нажми превью. Либо дизайнер работает неправильно, либо сгенериный с формы код будет вести себя так же.
                                    Попробовал разные способы вручную. При выводе любого виджета под ним создается простой виджет. При выводе QTabWidget виджет создается так что бы охватывать весь QTabWidget. Т.е. на части где нет закладок виден этот самый созданый виджет. Так что никакого выступания нет. Судя по всему такое реализовать нельзя :( Разве что как-то извратиться с show() и hide(). Иными словами через 5ю точку.
                                      Понятно... В общем, тебе делать нечего и ты фигнёй страдаешь :).
                                        Цитата archimed7592 @
                                        Понятно... В общем, тебе делать нечего и ты фигнёй страдаешь :).

                                        Нет. Мне просто надо получить пару виджетов с не совсем обычным видом и функциями.

                                        9. Можно ли как-то получить QTabWidget с возможностью вывода закладок на всех 4х сторонах, а не одной ? Именно один виджет, а не систему из 4х наложенных друг на друга виджетов.
                                        10. Есть QWidget. На нем с применением менеджеров компоновок размещены QPushButton, QLabel и QLineEdit. Что бы все создавать одним оператором всю эту композицию нужно запихнуть в класс. Получится что-то вроде
                                        ExpandedWrap disabled
                                          class MyClass : public QWidget
                                          {
                                              Q_OBJECT
                                          public:
                                              MyClass(QWidget *parent);
                                              ...
                                          private:
                                          //какие-то поля и методы
                                          //слоты и сигналы
                                          };


                                        С реализацией расстановки всех остальных виджетов в конструкторе.
                                        Основная задача состоит в том что бы упаковать этот класс в библиотеку и в программе динамически ее распаковать. Помогите с хедерфайлом интерфейса класса и части кода главной программы где плагин распаковывается и создается один экземпляр запакованого класса. Иными словами что бы после прочтения dll можно было работать, как если бы он находился в программе:
                                        MyClass a;
                                        a.show();

                                        Во всех примерах которые я нашел все классы внутри "нематериальные"(их работу мы не видим. мы видим результат их вычислений и т.д.). А здесь когда основные функции не мы реализовываем, а наследуются от QWidget возникают проблемы - наследуемые функции не видны. Ошибка идет еще на этапе компиляции.
                                        Сообщение отредактировано: Tam-Tam -
                                          Цитата Tam-Tam @
                                          Попробовал разные способы вручную. При выводе любого виджета под ним создается простой виджет. При выводе QTabWidget виджет создается так что бы охватывать весь QTabWidget. Т.е. на части где нет закладок виден этот самый созданый виджет. Так что никакого выступания нет. Судя по всему такое реализовать нельзя :( Разве что как-то извратиться с show() и hide(). Иными словами через 5ю точку.

                                          Ты можешь приложить картинку, на которой было бы понятно - что именно ты хочешь получить от QTabWidget?
                                            Примерно такое.
                                            Прикреплённая картинка
                                            Прикреплённая картинка
                                              Цитата Tam-Tam @
                                              Примерно такое.

                                              А ты это хочешь сделать в рамках именно главного окна приложения?
                                                Цитата Flex Ferrum @
                                                А ты это хочешь сделать в рамках именно главного окна приложения?

                                                Да.
                                                Если в рамках главного никак, то с удовольствием послушаю как оно вообще реализуемо.
                                                  Tam-Tam
                                                  Делаешь дочерний виджет "окном без рамки". Qt::Window | Qt::FramelessWindowHint
                                                  Вручную управляешь его координатами при перемещении родительского окна.
                                                  Надо еще что-то придумать с тем, чтобы родительское окно всегда оставалось активным.
                                                    10 вопрос решил. 9 все-еще не знаю как.

                                                    11. Создают ли менеджеры компоновок родительско-дочернюю связь ? При уничтожении виджета уничтожатся ли виджеты которые были размещены менеджерами на нем ?
                                                      11. Да, уничтожаются.
                                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                      0 пользователей:


                                                      Рейтинг@Mail.ru
                                                      [ Script execution time: 0,1131 ]   [ 16 queries used ]   [ Generated: 27.04.24, 17:58 GMT ]