Érdekes megoldások

2011.04.05. 21:04 | arabiata | Szólj hozzá!

Címkék: screen center constructor parameter tableview multicolored rows

 Az új felhasználó felvétele, felhasználó adatainak módosítása, környezeti változók beállításának leprogramozása igazi unalmas favágómunka. Egy dialog-ot (új felhasználó felvétele) legyártottam, és a többit ennek mintájára készítettem el. Például egyforma a konstruktoruk:

NewUserForm::NewUserForm(QSqlDatabase db_leiro_ptr, QHash<QString, QString> *hash_ptr) {

widget.setupUi(this);

const QRect screen = QApplication::desktop()->screenGeometry(0);

this->move(screen.center()-QPoint(this->width()/2,this->height()/2));

hash = hash_ptr;

tetlen_ido = hash->value("tetlen_ido").toInt();

tetlen_timer.start(tetlen_ido * 1000, this);

db_leiro = db_leiro_ptr;

widget.nev->setFocus();

 A 2. és 3. sor beállítja a form-ot a képernyő közepére.
A hash táblában - mint egyedüli osztályok közti adatcsatornában - átadhatom a form bezárási idejét, ha nincs egérmozgás és a belépett felhasználó azonosítóját mondjuk logolás miatt. A MainClass-ban dinamikus pointerrel hoztam létre a hash táblát. 

QPalette p = palette();

p.setColor(QPalette::Base, QColor(qRgb(0xFF, 0xFF, 0xFF)));

p.setColor(QPalette::AlternateBase, QColor(qRgb(0xD5, 0xEA, 0xFF)));

widget.tableView->setPalette(p);

Tableview sorait két különböző háttérszínnel váltakozva jelenítem meg.

QSqlQueryModel *model = new QSqlQueryModel;

model->setQuery("select felh_nev from felhasznalok", db_leiro);

widget.tableView->setModel(model);

widget.tableView->show(); 

 Feltöltöm a tableview-t adatokkal. A select-ben meghatározott mezők adják a sorok,cellák tartalmát. Majd minden megjelenítő widget-hez lehet model-t rendelni. Ez igen hasznos, mert így pl. nem kell egy listview feltöltését ciklusban végezni.

void NewUserForm::mouseMoveEvent(QMouseEvent* event) {

tetlen_timer.stop();

tetlen_timer.start(tetlen_ido * 1000, this);

}

 void NewUserForm::timerEvent(QTimerEvent* event) {

done(0);

}

Egérmozgás, timer ütemeinek figyelése

QString munka = QFileDialog::getExistingDirectory(this, trUtf8("Output könyvtár kiválasztása"), "/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

widget.out_konyvtar->setText(munka);

 Könyvtár kiválasztása QFileDialog segítségével

Mint írtam, a konstruktor, egérmozgás figyelése, timer ütemezése mindegyik dialog form-nál egyforma. Így tulajdonképpen másolással, egy template alkalmazásával gyorsan tudok új modal form-okat létrehozni, csak a funkciónak megfelelő változásokat programozom le. De ebben is sokat segít a copy-paste, mert a hibaüzenetek felépítése is egyforma, csak a szöveg változik.

Ami minden felhasználói adatbevitelnél nagyon fontos:

  • a felhasználó hazudik
  • a felhasználó össze - vissza nyomkod minden gombot
  • a felhasználó sátáni örömet érez, ha kiakasztja a programot
  • a felhasználó türelmetlen
  • a felhasználó nem tud olvasni
  • a felhasználó pontosan követte a program utasításait
  • a felhasználó találékony

tehát minden adatbevitelt alaposan ellenőrizzünk, ígyekezzünk bolondbiztos programot írni.

A bejegyzés trackback címe:

https://qtqt.blog.hu/api/trackback/id/tr932803011

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása