PDA

View Full Version : QComboBox in QTreeWidget



yes756
10th September 2009, 08:38
Hi, all.

I inserted a QComboBox using setItemWidget() in QTreeWidget.

The issue I am having is when I click on the QComboBox, the list drops down and then immediately closes again, so it is impossible to select an item on the list.

Thanks in advance for any suggestion.

e8johan
10th September 2009, 11:15
Could you please show some source code?

yes756
10th September 2009, 12:22
Could you please show some source code?



// TRW_OHEDIT is a Object name of QTreeWidget.
// m_name is a string.
void BS_OHEdit::SetTreeViewOfEdit2()
{
QTreeWidgetItem *name = new QTreeWidgetItem(TRW_OHEDIT);
QTreeWidgetItem *byte = new QTreeWidgetItem(name);
QTreeWidgetItem *format = new QTreeWidgetItem(name);
QTreeWidgetItem *bit1_4 = new QTreeWidgetItem(name);
QTreeWidgetItem *req = new QTreeWidgetItem(name);
QTreeWidgetItem *bit5_8 = new QTreeWidgetItem(name);
QTreeWidgetItem *channel = new QTreeWidgetItem(name);

cb_edit1 = new QComboBox(this); // format
cb_edit2 = new QComboBox(this); // request
cb_edit3 = new QComboBox(this); // channel

cb_edit1->setFixedSize(70, 35);
cb_edit1->addItems(QStringList() << "Encode" << "Binary");
cb_edit2->setFixedHeight(35);
cb_edit2->addItems(MakeNameOfK1("req"));
cb_edit3->setFixedSize(200, 35);
cb_edit3->addItems(MakeNameOfK1("channel"));

le_edit1 = new QLineEdit(this); // bits 1-4
le_edit2 = new QLineEdit(this); // bits 5-8

le_edit1->setFixedSize(50, 35);
le_edit1->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
le_edit1->setInputMask("BBBB;0");
le_edit1->setEnabled(false);
le_edit2->setFixedSize(50, 35);
le_edit2->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
le_edit2->setInputMask("BBBB;0");
le_edit2->setEnabled(false);

name->setText(0, m_name);
byte->setText(0, "Byte"); byte->setText(1, NameOfByte(m_name));
format->setText(0, "Format"); TRW_OHEDIT->setItemWidget(format, 1, cb_edit1);
bit1_4->setText(0, "Bits 1-4"); TRW_OHEDIT->setItemWidget(bit1_4, 1, le_edit1);
req->setText(0, "Request"); TRW_OHEDIT->setItemWidget(req, 1, cb_edit2);
bit5_8->setText(0, "Bits 5-8"); TRW_OHEDIT->setItemWidget(bit5_8, 1, le_edit2);
channel->setText(0, "Channel"); TRW_OHEDIT->setItemWidget(channel, 1, cb_edit3);

connect(cb_edit1, SIGNAL(currentIndexChanged(QString)), this, SLOT(cb_format_edit2_currentIndexChanged(QString)) );
connect(cb_edit2, SIGNAL(currentIndexChanged(int)), this, SLOT(cb_req_edit2_currentIndexChanged(int)));
connect(cb_edit3, SIGNAL(currentIndexChanged(int)), this, SLOT(cb_channel_edit2_currentIndexChanged(int)));
connect(le_edit1, SIGNAL(textChanged(QString)), this, SLOT(le_bit14_edit2_textChanged()));
connect(le_edit2, SIGNAL(textChanged(QString)), this, SLOT(le_bit58_edit2_textChanged()));

TRW_OHEDIT->expandAll();
}

Thank you for your reply.