You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
4.0 KiB
C++

4 years ago
#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<QTreeWidgetItem *> 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<QTreeWidgetItem*> 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<QTreeWidgetItem *> items;
QList<QLineEdit*> 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();
}