Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 18, 2013 19:48:15

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

QTableWidget ширина

Как подогнать размер виджета по ширине под таблицу?

import sys
from PyQt4.QtGui import QTableWidget, QSizePolicy, QApplication
app = QApplication(sys.argv)
w = QTableWidget(10,10)
# p = QSizePolicy()
# p.setHorizontalPolicy(QSizePolicy.Ignored)
# w.setSizePolicy(p)
# print(w.sizePolicy().horizontalPolicy())
# print(w.width())
# print(w.frameSize())
# print(w.size())
# print(w.sizeHint())
# print(w.baseSize())
# print(w.maximumWidth())
# print(w.maximumViewportSize())
# print(w.geometry())
# print(w.normalGeometry())
# print(w.frameGeometry().width())
# w.adjustSize()
w.show()
sys.exit(app.exec_())
То есть, нужно чтобы была видна таблица целиком независимо от размера ее столбцов.
Те закоментированные принты не выводят нужных размеров, почему-то.

Отредактировано sergeek (Фев. 19, 2013 07:07:15)

Офлайн

#2 Фев. 19, 2013 09:49:45

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

QTableWidget ширина

Видимо нельзя-таки это сделать по-нормальному. Решил так:

import sys
from PyQt4.QtGui import QTableWidget, QApplication
app = QApplication(sys.argv)
w = QTableWidget(10,10)
s = w.horizontalScrollBar()
w.show()
while s.isVisible():
    w.setFixedWidth(w.width()+1)
    
sys.exit(app.exec_())

Офлайн

#3 Фев. 19, 2013 17:16:38

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

QTableWidget ширина

Еще вариант.

Ширину столбцов можно получить через horizontalHeader
http://qt-project.org/doc/qt-4.8/qheaderview.html#length

К ней нужно прибавить ширину вертикального хедера и скролбара

import sys
from PyQt4.QtGui import QTableWidget, QApplication
app = QApplication(sys.argv)
w = QTableWidget(10,10)
w.show()
w.setFixedWidth(w.horizontalHeader().length() +
                w.verticalScrollBar().width() +
                w.verticalHeader().width())
sys.exit(app.exec_())
Но не факт, что горизонтальный скроллбар исчезнет, возможно нужно учитывать еще что-то, не хватает буквально 2-х пикселей.

Офлайн

#4 Фев. 19, 2013 18:05:56

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

QTableWidget ширина

Так получше, ага. Я пробовал только через сумму ширины стобцов и скроллбара и там побольше пикселей не хватало. Потестил - в линуксе не хватает 4 пикселя, в винХП - 2. Видимо, там еще какой-нибудь ширины рамки не достает. В любом случае, лучше, наверное, добавить константы, чем наблюдать как оно дергается Спасибо

Отредактировано sergeek (Фев. 19, 2013 18:09:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version