Отсутствующая угловая кнопка в QTableWidget - PullRequest
0 голосов
/ 07 июня 2018

Я использую pyqt5, и из того, что я прочитал, верхняя левая угловая ячейка должна создаваться автоматически.У меня есть это маленькое всплывающее окно, в котором я создаю таблицу и заполняю ее значениями из словаря:

class LimitTable(QWidget):
    query = QtCore.pyqtSignal(dict)

    def __init__(self, dic):
        QWidget.__init__(self)
        self.dic = dic
        self.setup_ui()
        self.setWindowTitle("Limit Table")

    def setup_ui(self):
        self.limit_table = QtWidgets.QTableWidget(self)
        self.limit_table.setGeometry(QtCore.QRect(10, 40, 681, 81))
        self.limit_table.setObjectName("limit_table")

        row_names = ["Lower Limit", "Upper Limit"]
        col_names = list(self.dic.keys())
        self.limit_table.setRowCount(len(row_names))
        self.limit_table.setColumnCount(len(self.dic.keys()))
        self.limit_table.setHorizontalHeaderLabels(col_names)

        helpers.add_header(self.limit_table, len(row_names),
                           row_names, "vertical")
        helpers.add_header(self.limit_table, len(col_names), col_names)

        for i, val in enumerate(self.dic.values()):
            self.limit_table.setItem(0, i,
                                     QTableWidgetItem("{:0.1e}".format(val[0])))
            self.limit_table.setItem(1, i,
                                     QTableWidgetItem("{:0.1e}".format(val[1])))

, где add_header просто

def add_header(tab_obj, count, name, hv="horizontal"):
    """Adds header objects to TableWidget.

    Args:
        - tab_obj (QTableWidget) : table object
        - count (int) : number of cells
        - name (str) : header name
        - hv (str) : choose horizontal or vertical header
    """
    tab_obj.setColumnCount(count)
    for col in range(0, count):
        item = QtWidgets.QTableWidgetItem()
        if isinstance(name, dict):
            item.setText(list(name.keys())[col])
        if isinstance(name, list):
            item.setText(name[col])
        if hv == "horizontal":
            tab_obj.setHorizontalHeaderItem(col, item)
            adjust_header(tab_obj, count, "Stretch")
        if hv == "vertical":
            tab_obj.setVerticalHeaderItem(col, item)
    return True

Так что в принципе это очень просто исогласно учебнику.Строки "setRowCount" и "setColumnCount" должны делать то, что я хочу.Но вместо этого я получаю это

Обновление 1

По-видимому, здесь есть угловая кнопка ...

self.limit_table.isCornerButtonEnabled()

возвращает True.Я также попытался специально установить его в True.Ничего не меняетсяКроме того, когда я использую QtDesigner или при создании любой другой таблицы, я получаю тот же результат: не удается отличить угловую кнопку от заголовка столбца или, другими словами, ячейка заголовка столбца первого столбца охватывает весь путь влевограницы стола.Кто-нибудь может относиться к этому?

Обновление 2

Мне до сих пор неясно, почему угловая кнопка не может рассматриваться как кнопка по умолчанию в моих таблицах.Однако, как правильно указали eyllanesc (спасибо, мужчина!), Угловая кнопка может быть отредактирована с помощью таблицы стилей.В pyqt это будет выглядеть примерно так:

    self.limit_table.setCornerButtonEnabled(True)
    self.limit_table.setStyleSheet("QTableCornerButton::section{border-width: 
    1px; border-color: #BABABA; border-style:solid;}")

, что приводит к следующему:

...