QLineEdit * getALineEdit()
{
QLineEdit * line = new QLineEdit;
line->setStyleSheet(QString("QLineEdit{border-radius: 6px;border: 1px solid #%1;padding:3px 0px 3px 6px;color: #000000;selection-background-color:#%1;}"
"QLineEdit:disabled{background:#d8d8d8;}").arg(style_main_color));
return line;
}
QDialog dialog;
dialog.setAutoFillBackground(true);
dialog.setPalette(Qt::white);
dialog.setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);
QFormLayout * forlayout = new QFormLayout;
auto ipEditor = getALineEdit();
QRegExp rx("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b");
ipEditor->setAttribute(Qt::WA_InputMethodEnabled, false);
ipEditor->setValidator(new QRegExpValidator(rx, ipEditor));
forlayout->addRow(tr("IP地址:"),ipEditor);
ipEditor->setText(logManagerIp);
auto spinbox = getASpinBox();
spinbox->setRange(1,65535);
spinbox->setValue(logManagerPort);
forlayout->addRow(tr("端口:"),spinbox);
auto hb = new QHBoxLayout;
QStatusBar * statubar = new QStatusBar;
statubar->setSizeGripEnabled(false);
statubar->setStyleSheet("background:#FFFFFF;color:#FF2222;");
hb->addWidget(statubar);
auto btn = getAOkPushButton(tr("确定"));
hb->addWidget(btn);
forlayout->addRow(hb);
connect(btn,&QPushButton::clicked,[ipEditor,&rx,statubar,&dialog,&spinbox,this]
{
auto ip = ipEditor->text().trimmed();
if(ip.isEmpty() || !rx.exactMatch(ip))
{
statubar->showMessage(tr("请输入正确的IP地址"),2000);
return ;
}
dialog.close();
});
dialog.setLayout(forlayout);
dialog.exec();
相关博文:Qt样式表:切换主题