Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Bulgarian
  4. C++ 2 въпроса
QtWS25 Last Chance

C++ 2 въпроса

Scheduled Pinned Locked Moved Bulgarian
9 Posts 4 Posters 5.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    html4eto
    wrote on last edited by
    #1

    1.Как се слагат събития примерно когато се цъкне върху бутона да се смени текста ?
    2.Има ли начин да се наместват обектите по прозореца с пиксели а не със колони, редово и тн. ?
    @#include <QtGui>
    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);
    QWidget *window = new QWidget();
    QLabel *label = new QLabel("text");
    QPushButton *button = new QPushButton("Click");
    QGridLayout *lay = new QGridLayout();
    lay->addWidget(label,0,0);
    lay->addWidget(button,0,1);
    window->setLayout(lay);
    window->show();
    return app.exec();
    }@

    1 Reply Last reply
    0
    • T Offline
      T Offline
      task_struct
      wrote on last edited by
      #2

      По въпрос 1: "Сигнали и слотове":http://doc.qt.nokia.com/stable/signalsandslots.html Накратко трябва да направиш използваш функцията connect() като и подадеш обект, сигнал, който излъчва, обект, слот, който да се изпълни при даденият сигнал. Така както си го написал ще ти е малко трудно, да свържеш нещо, защото слотовете по подразбиране за кликване на бутон и смяна на текст не са много съвместими и трябва да си направил под клас на QWidget, който има подходящите сигнали и слотове.

      По въпрос 2: Виж "QWidget::setGeometry":http://doc.qt.nokia.com/stable/qwidget.html#geometry-prop и "QWidget::move":http://doc.qt.nokia.com/stable/qwidget.html#pos-prop

      "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

      • Linu...
      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mart
        wrote on last edited by
        #3

        За да не пускам нова тема ще питам тук. Искам да направя една форма в която да има един QTextEdit, чиито размери да могат да се намалят до нула когато формата се свива. В момента формата не може да се свие достатъчно защото textEdit-та ми поради непонятни за мен причини не се свива до размер нула а остава като 71x71 точки и оттам самата форма не може да се свие повече.
        Направих една примерна форма с един бутон и един QTextEdit, чиито код пействам тук.

        @<?xml version="1.0" encoding="UTF-8"?>
        <ui version="4.0">
        <class>MainWindow</class>
        <widget class="QMainWindow" name="MainWindow">
        <property name="geometry">
        <rect>
        <x>0</x>
        <y>0</y>
        <width>347</width>
        <height>91</height>
        </rect>
        </property>
        <property name="windowTitle">
        <string>MainWindow</string>
        </property>
        <widget class="QWidget" name="centralwidget">
        <layout class="QGridLayout" name="gridLayout_2">
        <item row="0" column="0">
        <layout class="QGridLayout" name="gridLayout">
        <item row="0" column="0">
        <widget class="QPushButton" name="pushButton">
        <property name="sizePolicy">
        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
        </sizepolicy>
        </property>
        <property name="minimumSize">
        <size>
        <width>250</width>
        <height>0</height>
        </size>
        </property>
        <property name="maximumSize">
        <size>
        <width>16777215</width>
        <height>16777215</height>
        </size>
        </property>
        <property name="text">
        <string>PushButton</string>
        </property>
        </widget>
        </item>
        <item row="0" column="1">
        <widget class="QTextEdit" name="textEdit"/>
        </item>
        </layout>
        </item>
        </layout>
        </widget>
        </widget>
        <resources/>
        <connections/>
        </ui>
        @

        Искам формата ми да се може да се свива дотолкова, че текстовото поле буквално да изчезва. В момента то се свива на 71x71 и повече не може.

        1 Reply Last reply
        0
        • T Offline
          T Offline
          task_struct
          wrote on last edited by
          #4

          Предолагам, че текстовото поле си има минимални размери, които се определят от текста или поне от това, то да се вижда. Може да му сложиш нови. В дизайнера има поле за минимален размер, виж колко е то и го сложи на 0. Може и от кода да го направиш с "minimumSize":http://doc.qt.nokia.com/latest/qwidget.html#minimumSize-prop

          "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

          • Linu...
          1 Reply Last reply
          0
          • L Offline
            L Offline
            leon.anavi
            wrote on last edited by
            #5

            [quote author="html4eto" date="1321307888"]1.Как се слагат събития примерно когато се цъкне върху бутона да се смени текста ?
            [/quote]

            Виж статията в wiki на Български "Как се използва QPushButton":http://developer.qt.nokia.com/wiki/How_to_Use_QPushButton_Bulgarian. Там има примерен код, който при натискане на бутон променя текста и размера му.

            http://anavi.org/

            1 Reply Last reply
            0
            • M Offline
              M Offline
              Mart
              wrote on last edited by
              #6

              [quote author="task_struct" date="1322062119"]Предолагам, че текстовото поле си има минимални размери, които се определят от текста или поне от това, то да се вижда. Може да му сложиш нови. В дизайнера има поле за минимален размер, виж колко е то и го сложи на 0. Може и от кода да го направиш с "minimumSize":http://doc.qt.nokia.com/latest/qwidget.html#minimumSize-prop[/quote]

              Това с минималните размери беше първото за което се сетих. Не става. Давам му да са минимални и пак същата работа. Кода който съм пейстнал като се отвори с дизайнера се вижда, че минималните са 0. Истинската програма в която възникна този проблем е доста сложна и не мога да я пейстна. Там изобщо не използвам дизайнер - пиша всичко на ръка и разбира се съм сетнал минималните размери на 0. И не става и не става - има нещо което не позволява на текстовото поле да стане с размер близък до нулата.

              Ако може някой да вземе кода който дадох и да го сложи в един .ui файл и да го отвори с дизайнер-а. Там се вижда съвсем ясно какъв е проблема. Ако за този пример се намери решение, ще мога да го приложа и в истинската си програма. В този пример съм сложил един бутон с твърди размери. В истинската програма на мястото на този бутон има един тулбар с един куп неща в него, но той също е с твърдо заложени размери, а само текстовото поле (което изпълва останалото място от формата) трябва да може да се преоразмерява заедно с формата.

              Значи, прекалено сложно го казах, затова ще го кажа с прости думи: искам (налага се) формата ми да може да се преоразмерява до възможно най-малки размери, но това текстово поле не и позволява.

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Mart
                wrote on last edited by
                #7

                Ами аз си реших проблема.
                Получили са се два независими проблема, а аз се заблудих че е един...

                Проблема в истинската ми програма е, че не текстовото поле пречи, а многото тулбатове над него - те не позволяват минимални размери на формата.

                Но в дизайнера открих друг проблем. Оказа се, че ако не се зададе минимален размер, т.е. ако се остави така както е по подразбиране - нула, реално минималния размер не е нула, а този който е изписан в геометрията за височина и широчина. Ако обаче задам някакво число за минимален размер - например 1, тогава нещата се оправят. Мисля че това е грешка в дизайнера. Не в самия дизайнер, а в идеята на .ui формите. За да има минимален размер 0, това трябва изрично да се зададе по някакъв начин, а дизайнера не го прави.

                Я да попитам и един друг въпрос - нали темата е за въпроси :)
                В дизайнера има една много хубава функция - генериране на код (View Code...). Аз понеже не обичам да работя с .ui форми правя следното: правя си формата с дизайнера, после генерирам кода и си го пействам в .cpp файла и изобщо не използвам .ui файлове. Но. В QtCreator-a, във вградения му дизайнер тази функция (View Code...) липсва. Аз ли нещо не я откривам или?

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  task_struct
                  wrote on last edited by
                  #8

                  По предният въпрос: Мисля, че ако не е зададен изрично минимален размер, системта използва sizeHint.

                  По новият въпрос: Доколкото знам, тази функция не съществува в Qt Creator-а, защото не е нужда при наличието на тесктов редактор и начина на работа, който са разработили. Qt Creator-a динамично парсва .ui файла и ти предостава автоматично довършване на променливите от кода, който би се генерирал от него в редактора. За това няма нужд да си генерираш UI формите и да ги добавяш, както е било преди.

                  "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

                  • Linu...
                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mart
                    wrote on last edited by
                    #9

                    Има явно има нужда заради такива като мен дето не искат .ui файловете да са част от проекта. Така се принуждавам да инсталирам и самия дизайнер, който поне в Windows не се инсталира по подразбиране.
                    Още в самото начало като си правех експерименти разбрах че дизайнера (.ui) сякаш не дава пълна свобода и трябва да се донаписват подобни неща на ръка, което малко го обезсмисля, но пък от друга страна имам програма със стотици компоненти в една форма и там е незаменим.

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved