MEMO
QTableWidgetのセルに入力規則を設定します。正規表現を使用して数字のみを受け入れるサンプルです。
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QLineEdit>
// #include <QRegularExpression>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTableWidget *t = ui->tableWidget;
// 正規表現を使用して数字のみを受け入れる
for (int row = 0; row < t->rowCount(); row++) {
for (int column = 0; column < 2; column++) {
QLineEdit *lineEdit = new QLineEdit;
lineEdit->setStyleSheet("border: none;");
t->setCellWidget(row, column, lineEdit);
// 正規表現を使用して数字のみを受け入れる
connect(lineEdit, &QLineEdit::textEdited, this, [=](const QString &arg1) {
QString inputText = arg1;
QRegularExpression re("\\D"); // 半角数字以外
if (re.match(inputText).hasMatch()) {
lineEdit->blockSignals(true);
lineEdit->setText(inputText.left(inputText.length()-1));
lineEdit->blockSignals(false);
}
});
}
}
}