2014-04-10 14 views
6

Próbuję utworzyć QTableView, który można powiększać i pomniejszać, jak w Excelu.
Podobny pytano tutaj: Zooming function on a QWidgetQTableView Powiększanie/pomniejszanie

Jednak jestem instacji QTableView w PyQt i C nie tak reimplementing cała metoda paintEvent jest nieco ewoluowały. Kod źródłowy do tego jest nieco skomplikowany: https://qt.gitorious.org/qt/tiittane-qt/source/bdd4a9149789f60974603e1f7621d51378f0a108:src/gui/itemviews/qtableview.cpp#L1282

Czekam na to, czy istnieją inne realistyczne opcje, aby mieć możliwość powiększenia TableView. Moja pierwsza próba polegała na ustawieniu rozmiaru czcionki, a następnie zrozumieniu, że każda kolumna i szerokość wiersza również musiałyby być skalowane, co może stać się wolne. Wtedy uświadomił sobie, że zmiana czcionki zmieni drukowanie. Nie wyglądało to na eleganckie rozwiązanie. Zmiana skali malarza przed malowaniem wydaje się bardziej eleganckim rozwiązaniem, ale musiałaby ponownie wprowadzić i przetłumaczyć trochę kodu na pytona, aby to zrobić. Zastanawiam się, czy są jakieś inne haki, żeby to zrobić.

Dzięki

+0

miałeś żadnych sukcesów z tym w końcu? czy mógłbyś podzielić się techniką, na której się zdecydowałeś? dzięki! – simon

+2

W końcu zadanie zostało znacznie przesunięte w dół, gdzie nie działało. W pewnym momencie powrócę do tego, ale nie wiem kiedy. Z użyciem Sceny graficznej są pewne komplikacje i dziwne zachowania, więc nie jestem pewien, czy to będzie łatwiejsze niż ponowne wcielenie metody malowania w końcu – TexasRaptor

+0

Zapytałem o to kilka dni temu, moje umiejętności wyszukiwania są złe I zgadnij ... http: //stackoverflow.com/questions/30601123/zooming-a-view-in-pyqt. Myślę, że mogę skończyć dosłownie zmieniając rozmiar czcionki, a następnie zmieniając rozmiar na zawartość, która jest do bani, ale no cóż ... – neuronet

Odpowiedz

1

Jeśli można użyć QTableWidget zamiast następnie można utworzyć QGraphicsScene i add it to that. Wtedy łatwo kontrolujesz skalę widżetu wewnątrz.

Jeśli chcesz, aby nagłówki pionowe i poziome były zawsze widoczne, to myślę, że będziesz musiał wyłączyć paski przewijania tabeli (które zostaną zakończone powiększeniem, prawdopodobnie nie to, co chcesz) i mieć paski przewijania panelu zawierającego grafikę scena (prawdopodobnie panel byłby QAbstractScrollArea z 4 komórkami w układzie: jedna komórka dla sceny, jedna dla poziomego paska przewijania, jedna dla pionowego paska przewijania i jedna dla rogu może pusta) i połączenie ich z zachowaniem przewijania tabeli.

+0

To brzmi jak doskonały pomysł. Miałem problemy z jego implementacją, ponieważ paski przewijania wydają się być problemem z utrzymaniem przewijania poziome i pionowe nagłówków w widoku graficznym. – TexasRaptor

+0

@TexasRaptor Zaktualizowano. To zajmie trochę pracy. – Schollii

0

Nie ma wbudowanej metody powiększania widoku.

Najprostszym sposobem na oddzielenie rozmiaru czcionki na ekranie, w porównaniu do rozmiaru czcionki zapisanej lub wydrukowanej, jest zasadniczo posiadanie dwóch czcionek. Jeden, który ma być wyświetlany na ekranie, można wywołać "powiększenie", a drugi zapisać/wydrukować i nazwać go "rozmiarem czcionki".

Uwaga Ta odpowiedź jest wycinane i wklejane z tym samym pytaniem: Zooming a view in PyQt?

Powiązane problemy