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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-08-23 11:19:50

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

[Qt][SOLVED] Kolorowanie wierszy w QTableView

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)


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
LRU #480459

Offline

 

#2  2016-08-23 15:19:54

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

3135

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:43:35)

Offline

 

#3  2016-08-23 21:56:25

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

@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

 

#4  2016-08-23 22:51:51

  diabolic - Użytkownik

diabolic
Użytkownik
Skąd: okolice Leżajska
Zarejestrowany: 2007-10-08

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

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.


I am the one who chose my path

Offline

 

#5  2016-08-23 23:20:53

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

3136

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:43:36)

Offline

 

#6  2016-08-24 17:49:50

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

@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

 

#7  2016-08-28 11:08:07

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: [Qt][SOLVED] Kolorowanie wierszy w QTableView

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)


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
LRU #480459

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.008 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00124 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='18.225.175.230' WHERE u.id=1
0.00068 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.225.175.230', 1732217274)
0.00044 SELECT * FROM punbb_online WHERE logged<1732216974
0.00073 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.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00204 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.00076 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28884
Total query time: 0.00613 s