[C++] QT, zrozumieć pomoc qt...

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
soulreaver1
Wytworny Kaczor
Wytworny Kaczor
Posty: 409
Rejestracja: 13 mar 2009, 10:03
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Lokalizacja: 127.0.0.1

[C++] QT, zrozumieć pomoc qt...

Post autor: soulreaver1 »

Witam.

Właśnie wstawiłem sobie widgeta ComboBox do mojego programiku, niestety mam problem z jego implementacją.
W pomocy qt creatora znalazłem metodę insertItems która służy do wstawienia elementów do listy combo.

Kod: Zaznacz cały

void QComboBox::insertItems ( int index, const QStringList & list )

Inserts the strings from the list into the combobox as separate items, starting at the index specified.
If the index is equal to or higher than the total number of items, the new items are appended to the list of existing items. If the index is zero or negative, the new items are prepended to the list of existing items.
Na podstawie tego napisałem swoją metodę, nie wiem co oznacza "& list" więc pominąłem to.

Kod: Zaznacz cały

void MainWindow::ustawznak()
{
    QStringList znaki;
    znaki << " " << "_" << "-" << "|";
    ui->comboBox->insertItems(1, znaki);
   }
Program się kompiluje bez błędów, jednak ComboBox nie działa, nie rozwija się lista elementów. Moje pytanie; gdzie szukać opisów argumentów takich jak &list , &texts itp. ?
inny OS: FreeBSD 8.2, Linux Mint 12.
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Odp: [C++] QT, zrozumieć pomoc qt...

Post autor: norvoles »

Błąd musiałeś zrobić gdzie indziej, bo taki kod działa:

Kod: Zaznacz cały

QStringList znaki;
znaki << "A" << "B" << "C" << "D";
combo->insertItems(0, znaki);
formLayout->addRow(tag_name, combo);
http://img97.imageshack.us/img97/5033/beznazwyh.png
nie wiem co oznacza "& list" więc pominąłem to
QStringList to jest (mniej więcej) to samo co QList<QString>, czyli lista stringów, &list jest referencją na obiekt tego typu.
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [C++] QT, zrozumieć pomoc qt...

Post autor: mikolajs »

Moje pytanie; gdzie szukać opisów argumentów takich jak &list , &texts itp. ?
W porządnej książce do C++ ;)
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

Odp: [C++] QT, zrozumieć pomoc qt...

Post autor: Razi »

Jeśli w sygnaturze funkcji w argumencie jest znaczek &, to znaczy że przekazywana jest referencja, czyli obiekt nie jest kopiowany przez co działa szybciej.
Z poziomu wywoływania takich funkcji niczym to się prawie nie różni.

Różnica jest tylko taka, że jeśli ten obiekt będzie w tej funkcji zmieniony, to poza nią też się zmieni. Ale o ile pamiętam to w Qt to rzadkość, aby obiekt przekazywany przez referencję był modyfikowany, więc nie ma co się tym przejmować.

Przykład:

Kod: Zaznacz cały

void f(int l){
  l+=5;
}
void r(int &l){
  l+=5;
}
int main(){
  int a=1;
  printf("%d\n", a);
  f(a);
  printf("%d\n", a);
  r(a);
  printf("%d\n", a); 
  return 0;
}
W dokumentacji przecież każdy typ jest odnośnikiem i sobie można poczytać.

kod ui->comboBox->insertItems(1, znaki); pewnie dlatego nie działał, bo w ten combobox był pewnie wcześniej pusty i nie było w nim żadnych elementów, a numerowanie zaczyna się od 0

QStringList jest "synonimem" QList<QString>, tyle że jest przystosowany do pracy bezpośrednio z QStringami.
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [C++] QT, zrozumieć pomoc qt...

Post autor: mikolajs »

Różnica jest tylko taka, że jeśli ten obiekt będzie w tej funkcji zmieniony, to poza nią też się zmieni. Ale o ile pamiętam to w Qt to rzadkość, aby obiekt przekazywany przez referencję był modyfikowany, więc nie ma co się tym przejmować.
Zgadza się. Widać to po tym, że w definicji mamy const
Awatar użytkownika
soulreaver1
Wytworny Kaczor
Wytworny Kaczor
Posty: 409
Rejestracja: 13 mar 2009, 10:03
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Lokalizacja: 127.0.0.1

Odp: [C++] QT, zrozumieć pomoc qt...

Post autor: soulreaver1 »

Dzięki wszystkim za pomoc. Nie działało ponieważ... :bag: nie wywołałem mojej metody żadnym syganłem.
inny OS: FreeBSD 8.2, Linux Mint 12.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości