Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
jak w temacie. Dokładniej chodzi mi oto, że w momencie ładowania danych z QSqlTableModel do QTableView, wiersze "same" kolorowały się :)
z mojej wiedzy wynika, że zapewne należy użyć metody connect() :) tylko jaki sygnał zapodać to już jest gorsza kwestia ;) jeżeli ma ktoś jakiś KONSTRUKTYWNY pomysł to bardzo bym prosił o wsparcie :)
Ostatnio edytowany przez jezoo (2016-09-02 21:22:23)
Offline
3135
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:43:35)
Offline
@jezoo:
Dawno w QT nie siedziałem ale... o ile mnie pamięć nie myli takie coś robi się za pomocą delegatów - poszukaj sobie w przykładach QT "StarDelegate", tam jest pokazane jak stworzyć delegata wyświetlającego "gwiazdki" w kolumnie zamiast liczby - co prawda z nie tyczy się to QTableView (domyślam się ze o ten widget chodzi bo czegoś takiego jak QTableListView w dokumentacji nie widzę...), ale znając QT, robi się to analogicznie.
Generalnie stawiam że zgodnie z MVC - QSqlTableModel może być dowolny i nic tam nie musisz ruszać, tworzysz tylko delegata odpowiedniego i ustawiasz go w swoim QTableView za pomocą setColumDelegate lub setRowDelegate.
Pozdrawiam.
Offline
Może sprecyzuj co rozumiesz przez "kolorowanie się". Jeśli chcesz żeby co drugi wiersz był innego koloru to masz opcję "alternatingRowColors", a color główny możesz przez stylesheet ustawić ewentualnie, a jeśli coś bardziej złożonego to tak jak Huk pisze najlepiej przez delegaty.
Offline
3136
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:43:36)
Offline
@jezoo:
Dobrze @diabolic napisał - daj znać co chcesz osiągnąć przede wszystkim, bo jak tylko przeplot kolorów to opcja do tego jest. Natomiast jak coś poważniejszego to delegaty.
@uzytkownikubunt:
O ile dobrze rozumiem to proponujesz coś w stylu - w tabeli SQL umieścić kolumnę nazwijmy ją "Metadata" (albo referencję do tabeli o podobnym przeznaczeniu) i tam dać informacje o tym jak poszczególne komórki mają się narysować? Jeśli źle zrozumiałem to mnie popraw...
Powiem tyle że widziałem taki design i dobre to jest niestety tylko w teorii, w praktyce i tak wygląd aplikacji biznesowych dąży do jednego (per platforma oczywiście) - łatwiej tak ludziom działać po prostu i uzyskać pomoc kiedy apka wygląda wszędzie jedakowo - przez co benefity są zwykle na papierze, zaś trudność modyfikacji - w realu.
Przykładowo - w projekcie nad którym obecnie siedzę w pracy, ktoś zrobił coś podobnego - nie tyle dla wyglądu, co dla rozmieszczenia poszczególnych kolumn w tabeli. Miało to na celu kontrolę które kolumny na poszczególnym kliencie (na desktopie inne, na mobilce inne) się wyświetlają a które nie. Z założenia miało być łatwo modyfikowalne i miało się dać wprowadzać zmiany widokowe z poziomu bazy, bez konieczności ingerowania w kod - same zalety... tyle że realia są takie że modyfikacja tego to koszmar, za każdym razem kiedy dochodzi nowa funkcjonalności oparta o to ustrojstwo trzeba się konsultować z ludkami od wersji mobilnej czy chcą to pokazywać czy nie, podczas modyfikacji trzeba patrzeć czy wyłączenie jakiejś kolumny nie rozwali logiki biznesowej... Potrzebujesz dodać kolumnę pomiędzy istniejące A i B? Normalnie no problem, 5 minut roboty - ale tutaj trzeba się konsultować czy komuś coś to nie spieprzy i tracić czas, do tego logika działania mechanizmu pokazywania kolumn była (jak to zwykle bywa zresztą...) "rozwojowa" i z początkowej dość prostej opartej na indeksie numerycznym, z czasem doszły jakieś warunki które rozszyfrować potrafią tylko ich twórcy... - jednym słowem masakra.
Min. dlatego trend jest taki żeby dane były bytem całkiem oddzielnym od widoku - baza wypluwa Ci wynik, a to czy Ty to wyświetlisz jako tabelę, combobox, czy w formie trójwymiarowego sześcianu, bazę powinno kompletnie mącić. Potrzebujesz widok na stronkę? Tworzysz widok HTML, potrzebujesz dla iOS? Tworzysz natywny dla iOS itd. Dane dostajesz te same - Baza nie dba jak widok zostanie wyrenderowany.
Inna sprawa że jeszcze można działać na modelach pośrednich (widokowych) tak jak ma to miejsce w MVVM - wtedy faktycznie można poszaleć i tak jak w ASP.NET udekorować sobie odpowiednimi atrybutami model widokowy - tyle że model widokowy nie ma (a raczej nie powinien) wiele wspólnego z modelem bazodanowym...
Jeżeli chodziło o coś całkiem innego to rozwiń proszę myśl :)
Pozdrawiam.
Offline
Dla mojego klienta wygląd jest drugorzędny. Ważne, żeby mógł intuicyjnie ją obsługiwać. Jest to po prostu przerobienie aplikacji webowej którą mu robiłem kilka lat temu na desktopa.
Mnie chodzi o to, że on chce, żeby miał który kontrahent jest usunięty z bazy (właśnie tutaj chodzi mi o tą kolorowankę) czyli coś takiego:
[img]http://intershock.pl/images/qt_tabelka.png[/img]
Jeżeli chodzi o QTableListView to ja pomyliłem się w pierwszym poście faktem jest ma być QTableVIew :)
@Huk, stary masz u mnie piwo :D ;) o takie cudo mi właśnie chodziło. zamiast gwizdek zapodam sobie kolor wiersza :)
BTW, @Huk, widzę, że nawet potrafisz czytać myśli autora ;p
Ostatnio edytowany przez jezoo (2016-08-28 11:08:29)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00125 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.239.145' WHERE u.id=1 |
0.00071 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.15.239.145', 1732443142) |
0.00043 | SELECT * FROM punbb_online WHERE logged<1732442842 |
0.00065 | DELETE FROM punbb_online WHERE ident='54.36.149.49' |
0.00068 | DELETE FROM punbb_online WHERE ident='54.36.149.83' |
0.00047 | SELECT topic_id FROM punbb_posts WHERE id=304635 |
0.00155 | SELECT id FROM punbb_posts WHERE topic_id=28884 ORDER BY posted |
0.00059 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28884 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00084 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28884 ORDER BY p.id LIMIT 0,25 |
0.00075 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28884 |
Total query time: 0.00812 s |