2017-01-03 14 views
2

Как установить верхний левый угол QTableWidget с помощью фонового изображения? Теперь он белый. (Указал на изображении ниже)Как установить верхний левый угол QTableWidget с помощью фонового изображения?

enter image description here

Это мой код таблицы стилей:

QWidget { 
    background-image: url(src/bg.jpg); 
    color: #fffff8; 
} 

QHeaderView::section { 
    background-image: url(src/bg.jpg); 
    padding: 4px; 
    border: 1px solid #fffff8; 
} 

QTableWidget { 
    gridline-color: #fffff8; 
} 

QTableWidget QTableCornerButton::section { 
    background-image: url(src/bg.jpg); 
    border: 1px solid #fffff8; 
} 
+0

Мое предположение: вам нужно будет добавить столбец для хранения номеров строк и отключить заголовок. – Schollii

+0

Работает отлично для меня на linux. Вы можете попробовать установить другой [угловой виджет] (https://doc.qt.io/qt-4.8/qabstractscrollarea.html#setCornerWidget). – ekhumoro

+0

Ох! Спасибо, когда я использую setHorizontalHeaderLabels(), верхний левый угол QTableWidget белый, это ошибка qt? @Schollii – liaokong

ответ

0

Вы должны будете использовать столбец пользовательских строк заголовков:

  • отключить встроенная колонка заголовков строк,
  • добавить столбец для хранения номеров строк,
  • определить слоты для обновления идентификатора строки при добавлении/удалении строк и выбрать строку, изменить ее шрифт и т. Д.
  • и, наконец, установить виджет, который будет использоваться в заголовке столбца column = 0.
+0

спасибо Schollii :) – liaokong

2

Для меня, используя PyQt4.13 в Windows, установка фонового цвета в элементе QTableWidget QTableCornerButton в таблице стилей Qt имеет эффект, но установка фонового изображения не имеет. Тем не менее, вы можете сделать фоновый цвет прозрачным (rgba(0,0,0,0)), а затем вы увидите фоновое изображение виджета. Границу нужно снова установить, чтобы она выглядела красиво.

Код:

from PyQt4 import QtGui 

app = QtGui.QApplication([]) 

# app.setStyleSheet('QWidget { background-color: #aa8888; } QHeaderView::section { background-color: #88aa88; } QTableWidget QTableCornerButton::section {background-color: #8888aa; }') 
# app.setStyleSheet('QWidget { background-image: url(bg.png); } QHeaderView::section { background-image: url(bg.png); } QTableWidget QTableCornerButton::section {background-image: url(bg.png); }') 
app.setStyleSheet('QWidget { background-image: url(bg.png); } QHeaderView::section { background-color: rgba(0,0,0,0); } QTableWidget QTableCornerButton::section {background-color: rgba(0,0,0,0); }') 

w = QtGui.QTableWidget(2, 2) 
w.show() 

app.exec_() 

Результаты в (в зависимости от того, какой таблицы стилей линии вы используете): enter image description here

Левого изображение: установить виджет, headerview и цвет tablecornerbutton фона работу

центр изображения: установите фоновое изображение виджета, попробуйте установить изображение headerview и tablecornerbutton, но без эффекта

Правильное изображение: установить фоновое изображение виджета, установить headerview и tablecornerbutton цвет фона для прозрачного. Вероятно, необходимо установить границы.