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
Forum Updated to NodeBB v4.3 + New Features

QTableWidget css selectors for last row and last column

Scheduled Pinned Locked Moved Solved Qt for Python
2 Posts 1 Posters 574 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 23 Nov 2023, 17:13 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 23 Nov 2023, 18:29 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 23 Nov 2023, 19:06

      1/2

      23 Nov 2023, 17:13

      • Login

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