Qt 如何创建类似QWidget的矩阵?
如何创建一个QTableWidget,其中一些单元格使用统一大小的widget填充,而未使用的单元格则使用widget的大小填充?即使没有widget,结果表也应包含一个空白行/列。因为QTableWidget显然必须在每个单元格中包含某些内容,并且默认为可编辑文本框,似乎解决办法是在空白单元格中插入一个不可编辑的哑项目。或者有一个可以隐藏其内容的自定义小部件,这就是我在下面的示例中所做的 你特别问了关于固定尺寸的问题。。。根据具体的需要,有很多方法可以做到这一点。通过使用水平和垂直标题并使其不可调整大小,可以在整个表格上设置固定大小。另一种方法是在添加/item或任何时候为每行/列调用QTableView::setColumnWidth/setRowHeight 下面是一个示例,使用前一种方法在标题上设置大小,以及两种确定实际大小的方法—在构建表之前使用固定大小,或者使用对自定义小部件项的查找来确定大小Qt 如何创建类似QWidget的矩阵?,qt,qtablewidget,Qt,Qtablewidget,如何创建一个QTableWidget,其中一些单元格使用统一大小的widget填充,而未使用的单元格则使用widget的大小填充?即使没有widget,结果表也应包含一个空白行/列。因为QTableWidget显然必须在每个单元格中包含某些内容,并且默认为可编辑文本框,似乎解决办法是在空白单元格中插入一个不可编辑的哑项目。或者有一个可以隐藏其内容的自定义小部件,这就是我在下面的示例中所做的 你特别问了关于固定尺寸的问题。。。根据具体的需要,有很多方法可以做到这一点。通过使用水平和垂直标题并使其不
Update:以前的版本使用了一个哑QTable WistGeTimes来填充空白区域,但我认为如果需要使用自定义小部件,这会更好。请参见编辑以前版本的历史记录
//main.cpp 包括 //包含进度条的自定义表小部件项。酒吧是 //如果该值设置为<0,则隐藏。 类ProgressBarTwItem:PublicQWidget、PublicQtableWidgetItem { Q_对象 公众: ProgressBarTwItemQWidget*父项=nullptr,int值=-1: QWidgetparent, QTableWidgetItemQTableWidgetItem::UserType { QHBoxLayout*l=新的QHBoxLayoutthis; l->setContentsMargins0,0,0,0; m_pb=新的QProgressBarthis; //不要让PB大小决定我们的大小 m_pb->setSizePolicyQSizePolicy::忽略,QSizePolicy::忽略; m_pb->setAlignmentQt::AlignCenter; m_pb->设置最大值44; l->addWidgetm_pb; setValuevalue; } QSize sizeHint const override{return QSize75,25;} 公众时段: void setValueint值=-1常量 { m_pb->setVisiblevalue>-1; 如果值>-1 m_pb->setValuevalue; } 私人: QProgressBar*m_-pb; }; int main argc,char*argv[] { QApplication aargc,argv; a、 热熔合; QDialog d; d、 setLayoutnew QVBoxLayout; QTableWidget*tw=新的QTableWidget5、4和d; d、 布局->添加WidgetW; //设置为'true',从添加的自定义小部件中查找最大大小, //否则,请使用预设大小 const bool useWidgetSize=true; //这将是固定的单元格大小,可以是预设的,也可以是由自定义小部件确定的。 //如果从窗口小部件中查找,这将成为最小大小 //以防小部件没有返回有效的大小。 QSize cellSize=useWidgetSize?QSize10,10:QSize50,15; 对于int r=0;r