#include "testwidget.h" #include "QPushButton" #include "QLineEdit" #include "QAbstractItemView" #pragma execution_character_set("utf-8") TestWidget::TestWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); m_treewidget = ui.treeWidget; initTreewidget(m_treewidget); } void TestWidget::initTreewidget(QTreeWidget* pTreewidget) { QStringList header; header.append("属性"); header.append("值"); pTreewidget->setHeaderLabels(header); pTreewidget->header()->setStretchLastSection(true); pTreewidget->setColumnCount(2); pTreewidget->setStyleSheet("QTreeView::item:hover{background-color:rgb(0,255,0,50)}" "QTreeView::item:selected{background-color:rgb(255,0,0,100)}"); //pTreewidget->setSelectionModel(QAbstractItemView::ExtendedSelection); pTreewidget->setColumnWidth(0, 100); addIPRoot(pTreewidget); addEDitRoot(pTreewidget); } void TestWidget::addIPRoot(QTreeWidget *pTreewidget) { QRegExp regExpIP("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[\\.]){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])"); QRegExp regExpNetPort("((6553[0-5])|[655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])"); QRegExp regExpChannel("[0-5]"); QTreeWidgetItem *m_IPItems = new QTreeWidgetItem(pTreewidget, QStringList(QString("IP地址配置"))); QTreeWidgetItem *m_ServerItems = new QTreeWidgetItem(m_IPItems, QStringList(QString("本机服务器IP地址设置"))); QList serveritems; serveritems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("操作")))); serveritems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("IP地址")))); serveritems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("开放端口")))); m_ServerItems->addChildren(serveritems); QPushButton* m_pButOpen = new QPushButton("打开服务"); QLineEdit *m_EditserverIP = new QLineEdit; QLineEdit *m_EditserverPort = new QLineEdit; m_EditserverIP->setValidator(new QRegExpValidator(regExpIP, this)); m_EditserverPort->setValidator(new QRegExpValidator(regExpNetPort, this)); m_EditserverIP->setText("192.168.1.1"); m_EditserverPort->setText("100"); pTreewidget->setItemWidget(serveritems.at(0), 1, m_pButOpen); pTreewidget->setItemWidget(serveritems.at(1), 1, m_EditserverIP); pTreewidget->setItemWidget(serveritems.at(2), 1, m_EditserverPort); QTreeWidgetItem *m_ClientItems = new QTreeWidgetItem(m_IPItems, QStringList(QString("目标客户端IP地址设置"))); QList clientitems; clientitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("IP地址")))); clientitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("源端口")))); m_ClientItems->addChildren(clientitems); QLineEdit *m_EditclientIP = new QLineEdit; QLineEdit *m_EditclientPort = new QLineEdit; m_EditclientIP->setValidator(new QRegExpValidator(regExpIP, this)); m_EditclientPort->setValidator(new QRegExpValidator(regExpNetPort, this)); pTreewidget->setItemWidget(clientitems.at(0), 1, m_EditclientIP); pTreewidget->setItemWidget(clientitems.at(1), 1, m_EditclientPort); QPushButton *pSaveButton = new QPushButton("保存"); QTreeWidgetItem* saveItem = new QTreeWidgetItem(m_IPItems, QStringList(QString("保存设置"))); pTreewidget->setItemWidget(saveItem, 1, pSaveButton); } void TestWidget::addEDitRoot(QTreeWidget *pTreewidget) { QTreeWidgetItem *m_IPItems = new QTreeWidgetItem(pTreewidget, QStringList(QString("Edit设置"))); QList items; QList pLineEdits; for (int i = 0; i < 10; i++) { items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i)))); QLineEdit *pEdit = new QLineEdit; pEdit->setText(QString("%1").arg(i)); pLineEdits.append(pEdit); } m_IPItems->addChildren(items); pTreewidget->insertTopLevelItem(0, m_IPItems); for (int nIndex = 0; nIndex < pLineEdits.size(); nIndex++) { pTreewidget->setItemWidget(items.at(nIndex), 1, pLineEdits.at(nIndex)); } } TestWidget::~TestWidget() { m_treewidget->clear(); }