Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. QTableWidget css selectors for last row and last column
Qt 6.11 is out! See what's new in the release blog

QTableWidget css selectors for last row and last column

Scheduled Pinned Locked Moved Solved Qt for Python
2 Posts 1 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    papinhio
    wrote on last edited by
    #1

    I am not using the grid lines of QTableWidget.

    Instead, i use:

    QTableWidget::item {
    	padding: 10px 10px 10px 10px;
    	border:1px solid black;
    	border-top:none;
    	border-left:none;
    }
    

    How can i have border-right:none for last column QTableWidgetItems and border-bottom:none for last row QTableWidgetItems?

    1 Reply Last reply
    0
    • P Offline
      P Offline
      papinhio
      wrote on last edited by papinhio
      #2

      Here is what i try:

      File: table.py:

      # -*- coding: utf-8 -*-
      
      # Form implementation generated from reading ui file 'table.ui'
      #
      # Created by: PyQt5 UI code generator 5.15.9
      #
      # WARNING: Any manual changes made to this file will be lost when pyuic5 is
      # run again.  Do not edit this file unless you know what you are doing.
      
      
      from PyQt5 import QtCore, QtGui, QtWidgets
      
      
      class Ui_Dialog(object):
          def setupUi(self, Dialog):
              Dialog.setObjectName("Dialog")
              Dialog.resize(400, 300)
              self.gridLayout = QtWidgets.QGridLayout(Dialog)
              self.gridLayout.setObjectName("gridLayout")
              self.tableWidget = QtWidgets.QTableWidget(Dialog)
              self.tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)
              self.tableWidget.setStyleSheet("QHeaderView::section{\n"
      "    padding:10px;\n"
      "    background:rgb(155, 255, 148);\n"
      "}\n"
      "\n"
      "QHeaderView::section:horizontal{\n"
      "    border:1px solid #ABABAB;\n"
      "    border-left:none;\n"
      "}\n"
      "\n"
      "QHeaderView::section:vertical{\n"
      "    border:1px solid #ABABAB;\n"
      "    border-top:none;\n"
      "}\n"
      "\n"
      "QTableCornerButton::section{\n"
      "    background:white;\n"
      "    border:1px solid #ABABAB;\n"
      "    border-left:none;\n"
      "    border-top:none;\n"
      "}")
              self.tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
              self.tableWidget.setShowGrid(False)
              self.tableWidget.setObjectName("tableWidget")
              self.tableWidget.setColumnCount(20)
              self.tableWidget.setRowCount(18)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(0, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(1, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(2, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(3, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(4, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(5, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(6, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(7, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(8, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(9, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(10, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(11, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(12, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(13, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(14, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(15, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(16, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setVerticalHeaderItem(17, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(0, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(1, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(2, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(3, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(4, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(5, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(6, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(7, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(8, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(9, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(10, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(11, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(12, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(13, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(14, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(15, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(16, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(17, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(18, item)
              item = QtWidgets.QTableWidgetItem()
              self.tableWidget.setHorizontalHeaderItem(19, item)
              self.tableWidget.horizontalHeader().setHighlightSections(False)
              self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
      
              self.retranslateUi(Dialog)
              QtCore.QMetaObject.connectSlotsByName(Dialog)
      
          def retranslateUi(self, Dialog):
              _translate = QtCore.QCoreApplication.translate
              Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
              item = self.tableWidget.verticalHeaderItem(0)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(1)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(2)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(3)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(4)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(5)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(6)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(7)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(8)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(9)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(10)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(11)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(12)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(13)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(14)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(15)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(16)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.verticalHeaderItem(17)
              item.setText(_translate("Dialog", "New Row"))
              item = self.tableWidget.horizontalHeaderItem(0)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(1)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(2)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(3)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(4)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(5)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(6)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(7)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(8)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(9)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(10)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(11)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(12)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(13)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(14)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(15)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(16)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(17)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(18)
              item.setText(_translate("Dialog", "New Column"))
              item = self.tableWidget.horizontalHeaderItem(19)
              item.setText(_translate("Dialog", "New Column"))
      
      
      if __name__ == "__main__":
          import sys
          app = QtWidgets.QApplication(sys.argv)
          Dialog = QtWidgets.QDialog()
          ui = Ui_Dialog()
          ui.setupUi(Dialog)
          Dialog.show()
          sys.exit(app.exec_())
      
      

      File: run_me.py:

      from PyQt5 import QtWidgets, QtCore, QtGui
      from table import Ui_Dialog
      import os
      import sys
      
      class Run_me:
      	
      	def __init__(self):
      		self.app = QtWidgets.QApplication(sys.argv)
      		self.app.setStyle("Fusion")
      		self.Dialog = QtWidgets.QDialog()
      		self.ui = Ui_Dialog()
      		self.ui.setupUi(self.Dialog)
      		self.Dialog.show()
      		self.ui.tableWidget.setItemDelegate(GridDelegate(self.ui.tableWidget))
      		sys.exit(self.app.exec_())
      		
      class GridDelegate(QtWidgets.QStyledItemDelegate):
      	pen = QtGui.QPen(QtGui.QColor('#000000'), 1)
      
      	def paint(self, qp, opt, index):
      		qp.save()
      		qp.setPen(self.pen)
      		qp.setBrush(QtCore.Qt.NoBrush)
      		lastRow = index.model().rowCount() - 1
      		lastCol = index.model().columnCount() - 1
      		if index.row() < lastRow and index.column() < lastCol:
      			qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight())
      			qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight())
      		elif index.row() == lastRow and index.column() == lastCol:
      			pass
      		elif index.row() == lastRow:
      			qp.drawLine(opt.rect.topRight(), opt.rect.bottomRight())
      		elif index.column() == lastCol:
      			qp.drawLine(opt.rect.bottomLeft(), opt.rect.bottomRight())
      		qp.restore()
      		super().paint(qp, opt, index)
      		
      if __name__ == "__main__":
      	program = Run_me()
      

      Result:

      2023-11-23 20 30 10.png

      1 Reply Last reply
      0
      • P papinhio has marked this topic as solved on

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved