eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Qt: Szerokość splittera
Ilość wypowiedzi w tym wątku: 11

  • 1. Data: 2012-02-29 07:31:28
    Temat: Qt: Szerokość splittera
    Od: Przemysław Adam Śmiejek <n...@s...pl>

    Witam,

    zachciało mi się ostatnio pouczyć trochę Qt. I tak na początek
    chciałem sobie zrobić w oknie dwa elementy oddzielone splitterem do
    przesuwania ich szerokości. Zrobiłem to tak:


    QSplitter *splitterPoziomy = new QSplitter(widget);
    splitterPoziomy->addWidget( etykieta1 );
    splitterPoziomy->addWidget( etykieta2 );
    splitterPoziomy->setOrientation(Qt::Vertical);

    i wszystko działa, tylko szerokość tych elementów na starcie jest
    JakaśTam. A chciałbym określić osobiście, że część 1 ma być np. 200px, a
    część 2 pozostałą szerokość. Czy ktoś mógłby mi podpowiedzieć, jak to
    zrobić? Nie umiem się dopatrzeć żadnej właściwości QSplittera, która by
    to regulowała.

    --
    Przemysław Adam Śmiejek

    Niech żadne nieprzyzwoite słowo nie wychodzi z ust waszych,
    ale tylko dobre, które może budować, gdy zajdzie potrzeba,
    aby przyniosło błogosławieństwo tym, którzy go słuchają. (Ef 4,29)


  • 2. Data: 2012-02-29 08:45:24
    Temat: Re: Qt: Szerokość splittera
    Od: Tomasz D <t...@g...com>

    W dniu środa, 29 lutego 2012, 08:31:28 UTC+1 użytkownik Przemysław Adam Śmiejek
    napisał:
    > Witam,
    >
    > zachciało mi się ostatnio pouczyć trochę Qt. I tak na początek
    > chciałem sobie zrobić w oknie dwa elementy oddzielone splitterem do
    > przesuwania ich szerokości. Zrobiłem to tak:
    >
    >
    > QSplitter *splitterPoziomy = new QSplitter(widget);
    > splitterPoziomy->addWidget( etykieta1 );
    > splitterPoziomy->addWidget( etykieta2 );
    > splitterPoziomy->setOrientation(Qt::Vertical);
    >
    > i wszystko działa, tylko szerokość tych elementów na starcie jest
    > JakaśTam. A chciałbym określić osobiście, że część 1 ma być np. 200px, a
    > część 2 pozostałą szerokość. Czy ktoś mógłby mi podpowiedzieć, jak to
    > zrobić? Nie umiem się dopatrzeć żadnej właściwości QSplittera, która by
    > to regulowała.
    >

    Jedna opcja to taka, żeby ograniczyć maksymalny rozmiar jednego z widgetów i ustawić
    mu size policy.

    QSplitter* sp = new QSplitter(Qt::Horizontal);

    QPushButton* x = new QPushButton("xxx");
    QPushButton* y = new QPushButton("yyy");

    x->setMaximumWidth(200);
    x->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::E
    xpanding);

    sp->addWidget(x);
    sp->addWidget(y);

    Ewentualnie możesz proporcjonalnie podzielić sekcje splittera:

    sp->setStretchFactor(0, 1);
    sp->setStretchFactor(1, 5);

    Po tym wywołaniu proporcje lewego do prawego będą 1:5


  • 3. Data: 2012-02-29 09:24:27
    Temat: Re: Qt: Szerokość splittera
    Od: Przemysław Adam Śmiejek <n...@s...pl>

    W dniu 29.02.2012 09:45, Tomasz D pisze:
    > W dniu środa, 29 lutego 2012, 08:31:28 UTC+1 użytkownik Przemysław Adam Śmiejek
    napisał:
    >> Witam,
    >>
    >> zachciało mi się ostatnio pouczyć trochę Qt. I tak na początek
    >> chciałem sobie zrobić w oknie dwa elementy oddzielone splitterem do
    >> przesuwania ich szerokości. Zrobiłem to tak:
    >>
    >>
    >> QSplitter *splitterPoziomy = new QSplitter(widget);
    >> splitterPoziomy->addWidget( etykieta1 );
    >> splitterPoziomy->addWidget( etykieta2 );
    >> splitterPoziomy->setOrientation(Qt::Vertical);
    >>
    >> i wszystko działa, tylko szerokość tych elementów na starcie jest
    >> JakaśTam. A chciałbym określić osobiście, że część 1 ma być np. 200px, a
    >> część 2 pozostałą szerokość. Czy ktoś mógłby mi podpowiedzieć, jak to
    >> zrobić? Nie umiem się dopatrzeć żadnej właściwości QSplittera, która by
    >> to regulowała.
    >>
    >
    > Jedna opcja to taka, żeby ograniczyć maksymalny rozmiar jednego z widgetów i
    ustawić mu size policy.

    Ale nie chcę ograniczać rozmiaru, tylko chcę, żeby na starcie było np.

    100px | reszta

    a jak user zechce sobie rozciągać na więcej, to OK. Chodzi o to, żeby
    ustawić na starcie położenie splittera (docelowo będzie wczytywane jako
    konfiguracja). Tak jak w Thunderbirdzie np. po lewej drzewko wąskie, po
    prawej wiadomości szerokie. I drzewko da się splitterem powiększać, ale
    po uruchomieniu ma wąskie i już.

    > Ewentualnie możesz proporcjonalnie podzielić sekcje splittera:
    > sp->setStretchFactor(0, 1);
    > sp->setStretchFactor(1, 5);
    > Po tym wywołaniu proporcje lewego do prawego będą 1:5

    Hm... Wpisałem i dla pionowego zero różnicy. Nadal mam podział pół na pół.
    A dla poziomego to w ogóle zniknęła mi gdzieś dolna część. Pełny kod mam
    taki:

    personFinder = new QLineEdit;
    QVBoxLayout *personLayout = new QVBoxLayout;
    personLayout->addWidget(personFinder);
    personLayout->addWidget(editText2);
    QWidget *widgetLeft = new QWidget;
    widgetLeft->setLayout( personLayout );

    // splitery
    QSplitter *splitterPoziomy = new QSplitter(widget);
    splitterPoziomy->addWidget( etykieta1 );
    splitterPoziomy->addWidget( etykieta2 );
    splitterPoziomy->setOrientation(Qt::Vertical);

    splitterPoziomy->setStretchFactor(0, 1);
    splitterPoziomy->setStretchFactor(1, 5);

    QSplitter *splitterPionowy = new QSplitter(widget);
    splitterPionowy->addWidget( widgetLeft );
    splitterPionowy->addWidget( splitterPoziomy );

    Ma z tego powstać aplikacja o wyglądzie takim: po lewej wąska lista
    osób, nad tą listą edytorek do wyszukiwania osób. Po kliknięciu na osobę
    pojawia się po prawej lista zdarzeń dla tej osoby (coś ala lista mejli w
    thunderbirdzie), a po kliknięciu na zdarzenie, pod spodem treść opisu
    zdarzenia.

    --
    Przemysław Adam Śmiejek

    Niech żadne nieprzyzwoite słowo nie wychodzi z ust waszych,
    ale tylko dobre, które może budować, gdy zajdzie potrzeba,
    aby przyniosło błogosławieństwo tym, którzy go słuchają. (Ef 4,29)


  • 4. Data: 2012-02-29 09:36:21
    Temat: Re: Qt: Szerokość splittera
    Od: Tomasz D <t...@g...com>

    A możesz spróbować skompilować coś takiego?

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    QSplitter* glownySplitter = new QSplitter(Qt::Horizontal);

    QSplitter* lewySplitter = new QSplitter(Qt::Vertical);
    QPushButton* edytor = new QPushButton("edytor");
    QPushButton* lista = new QPushButton("lista");
    lewySplitter->addWidget(edytor);
    lewySplitter->addWidget(lista);
    lewySplitter->setStretchFactor(0, 1);
    lewySplitter->setStretchFactor(1, 5);

    QSplitter* prawySplitter = new QSplitter(Qt::Vertical);
    QPushButton* zdarzenia = new QPushButton("zdarzenia");
    QPushButton* opis = new QPushButton("opis");
    prawySplitter->addWidget(zdarzenia);
    prawySplitter->addWidget(opis);

    glownySplitter->addWidget(lewySplitter);
    glownySplitter->addWidget(prawySplitter);

    glownySplitter->setStretchFactor(0, 1);
    glownySplitter->setStretchFactor(1, 5);

    setCentralWidget(glownySplitter);
    }

    U mnie to mniej więcej przypomina Thunderbirda układem paneli.


  • 5. Data: 2012-02-29 09:54:34
    Temat: Re: Qt: Szerokość splittera
    Od: Przemysław Adam Śmiejek <n...@s...pl>

    W dniu 29.02.2012 10:36, Tomasz D pisze:
    > A możesz spróbować skompilować coś takiego?

    Hm... To działa. To już nie rozumiem co robię nie tak ;(

    --
    Przemysław Adam Śmiejek

    Niech żadne nieprzyzwoite słowo nie wychodzi z ust waszych,
    ale tylko dobre, które może budować, gdy zajdzie potrzeba,
    aby przyniosło błogosławieństwo tym, którzy go słuchają. (Ef 4,29)


  • 6. Data: 2012-02-29 11:10:30
    Temat: Re: Qt: Szerokość splittera
    Od: GAD Zombie <g...@U...gad.USUN.art.pl>

    W dniu 2012-02-29 08:31, Przemysław Adam Śmiejek pisze:
    > Witam,
    >
    > zachciało mi się ostatnio pouczyć trochę Qt. I tak na początek chciałem
    > sobie zrobić w oknie dwa elementy oddzielone splitterem do przesuwania
    > ich szerokości. Zrobiłem to tak:
    >
    >
    > QSplitter *splitterPoziomy = new QSplitter(widget);
    > splitterPoziomy->addWidget( etykieta1 );
    > splitterPoziomy->addWidget( etykieta2 );
    > splitterPoziomy->setOrientation(Qt::Vertical);
    >
    > i wszystko działa, tylko szerokość tych elementów na starcie jest
    > JakaśTam. A chciałbym określić osobiście, że część 1 ma być np. 200px, a
    > część 2 pozostałą szerokość. Czy ktoś mógłby mi podpowiedzieć, jak to
    > zrobić? Nie umiem się dopatrzeć żadnej właściwości QSplittera, która by
    > to regulowała.
    >

    A czy nie powinienes zmienic rozmiaru (width/height) elementow, ktore
    rozdziela splitter? Tak to dziala w Delphi/BCB.

    --
    GAD Zombie
    http://gad.art.pl/ http://sadist.art.pl/
    http://gry-samochodowe.gad.art.pl/


  • 7. Data: 2012-02-29 11:39:36
    Temat: Re: Qt: Szerokość splittera
    Od: Przemysław Adam Śmiejek <n...@s...pl>

    W dniu 29.02.2012 10:54, Przemysław Adam Śmiejek pisze:
    >
    > Hm... To działa. To już nie rozumiem co robię nie tak ;(

    O! Już działa. Chyba się nie lubiło z etykietami. Dałem na razie
    wstępnie edytorki w te puste miejsca i już się tak zachowuje, jak trzeba.

    --
    Przemysław Adam Śmiejek

    Niech żadne nieprzyzwoite słowo nie wychodzi z ust waszych,
    ale tylko dobre, które może budować, gdy zajdzie potrzeba,
    aby przyniosło błogosławieństwo tym, którzy go słuchają. (Ef 4,29)


  • 8. Data: 2012-03-01 00:29:10
    Temat: Re: Qt: Szerokość splittera
    Od: PawelS <c...@1...pl>

    Przemysław Adam Śmiejek pisze:
    > Witam,
    >
    > zachciało mi się ostatnio pouczyć trochę Qt. I tak na początek chciałem
    > sobie zrobić w oknie dwa elementy oddzielone splitterem do przesuwania
    > ich szerokości. Zrobiłem to tak:
    >
    >
    > QSplitter *splitterPoziomy = new QSplitter(widget);
    > splitterPoziomy->addWidget( etykieta1 );
    > splitterPoziomy->addWidget( etykieta2 );
    > splitterPoziomy->setOrientation(Qt::Vertical);
    >
    > i wszystko działa, tylko szerokość tych elementów na starcie jest
    > JakaśTam. A chciałbym określić osobiście, że część 1 ma być np. 200px, a
    > część 2 pozostałą szerokość. Czy ktoś mógłby mi podpowiedzieć, jak to
    > zrobić? Nie umiem się dopatrzeć żadnej właściwości QSplittera, która by
    > to regulowała.
    >


    Możesz też spróbować:
    void QSplitter::setSizes ( QValueList<int> list )
    QValueList<int> QSplitter::sizes () const
    http://doc.trolltech.com/3.3/qsplitter.html#sizes
    http://doc.trolltech.com/3.3/qsplitter.html#setSizes
    trochę mniej wygodne, ale również można sterować spliterem ...


  • 9. Data: 2012-03-01 07:15:43
    Temat: Re: Qt: Szerokość splittera
    Od: szyk <s...@o...pl>


    > Możesz też spróbować:
    > void QSplitter::setSizes ( QValueList<int> list )
    > QValueList<int> QSplitter::sizes () const
    > http://doc.trolltech.com/3.3/qsplitter.html#sizes
    > http://doc.trolltech.com/3.3/qsplitter.html#setSizes
    > trochę mniej wygodne, ale również można sterować spliterem ...

    A na samym dole: Qt 3.3.7
    Dalszy komentarz zbyteczny...


  • 10. Data: 2012-03-01 16:47:31
    Temat: Re: Qt: Szerokość splittera
    Od: PawelS <c...@1...pl>

    szyk pisze:
    >
    >> Możesz też spróbować:
    >> void QSplitter::setSizes ( QValueList<int> list )
    >> QValueList<int> QSplitter::sizes () const
    >> http://doc.trolltech.com/3.3/qsplitter.html#sizes
    >> http://doc.trolltech.com/3.3/qsplitter.html#setSizes
    >> trochę mniej wygodne, ale również można sterować spliterem ...
    >
    > A na samym dole: Qt 3.3.7
    > Dalszy komentarz zbyteczny...

    W takim razie po co komentowałeś ?
    Dla generowania śmieci w sieci ?

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: