• 1042阅读
  • 3回复

[讨论]关于QComboBox下拉框放一个QTableWidget后,addItem无效的问题 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2022-09-27
QComboBox下拉框放一个QTableWidget后,addItem无效,具体代码如下:
  1. cbBox = new QComboBox(this);
  2.     cbBox->setStyleSheet("QComboBox{border-image:url(:/image/drive/bgk_combobox.png);color:#003CA6;border:none;}"
  3.                                "QComboBox QAbstractItemView{background-color:#FAFAFA; border:2px solid #003CA6; border-radius:5px; color:#003CA6; height:25px;outline: 0px;}"
  4.                                "QComboBox QAbstractItemView::item{background-color:#FAFAFA; color:#003CA6; height:25px;}"
  5.                                "QComboBox QAbstractItemView::item:hover{background-color:#003CA6; color:white; height:25px;}"
  6.                                "QComboBox QAbstractItemView::item:selected{background-color:#003CA6; color:white; height:25px;}"
  7.                                "QComboBox::drop-down {border: none;}"
  8.                                "QComboBox::down-arrow {image:url(:/res/down_arrow.png);padding: 0 14 0 0;}");
  9.     cbBox->addItem(QString("Values"));  //此处在QComboBox上未显示
  10.     QStyledItemDelegate *itemDelegate = new QStyledItemDelegate();
  11.     cbBox->setItemDelegate(itemDelegate);
  12.     cbBox->resize(200, 30);
  13.     
  14.     QTableWidget *tableWidget = new QTableWidget(1,2);
  15.     tableWidget->verticalHeader()->setVisible(false);
  16.     tableWidget->horizontalHeader()->setVisible(false);
  17.     tableWidget->setShowGrid(false);
  18.     for(int i = 0; i < 1; ++i)
  19.     {
  20.         //tableWidget->setRowHeight(i, comboBox->width()/2);
  21.         tableWidget->setColumnWidth(i, cbBox->width()/2);
  22.         for(int j = 0; j < 2; ++j)
  23.         {
  24.             if(j == 0)
  25.             {
  26.                 btn1 = new QPushButton;
  27.                 btn1->setFixedSize(cbBox->width()/2, cbBox->height());
  28.                 btn1->setText(QString("Hex"));
  29.                 connect(btn1, &QPushButton::clicked, this, &combobox::onClickedBtn1);
  30.                 tableWidget->setCellWidget(i, j, btn1);
  31.                 btn1->installEventFilter(this);
  32.             }
  33.             else
  34.             {
  35.                 btn2 = new QPushButton;
  36.                 btn2->setFixedSize(cbBox->width()/2, cbBox->height());
  37.                 btn2->setText(QString("Dec"));
  38.                 connect(btn2, &QPushButton::clicked, this, &combobox::onClickedBtn2);
  39.                 tableWidget->setCellWidget(i, j, btn2);
  40.                 btn2->installEventFilter(this);
  41.             }
  42.         }
  43.     }
  44.     cbBox->setModel(tableWidget->model());
  45.     cbBox->setView(tableWidget);
cbBox明明已经addItem一个项Values了,但是放置tableWidget后,Values却不显示了,请问有什么办法能让QComboBox的默认放着一个项:Values,点击箭头后,会显示以一个以一行两列的单元格,里面左右分别放置这一个按钮的QTableWidget吗?

离线zy1233

只看该作者 1楼 发表于: 2022-10-08
setView之后再addItem?
离线lwei24

只看该作者 2楼 发表于: 2022-10-09
回 zy1233 的帖子
zy1233:setView之后再addItem? (2022-10-08 15:12) 

没有,是先addItem然后才setView
离线zy1233

只看该作者 3楼 发表于: 2022-10-10
回 lwei24 的帖子
lwei24:没有,是先addItem然后才setView
 (2022-10-09 10:05) 

所以让你反过来试试啊
快速回复
限100 字节
 
上一个 下一个