增加添加列功能
This commit is contained in:
parent
dd9f9408c1
commit
4bd4ee655d
|
@ -49,11 +49,17 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
textToSqliteAction->setIcon(convertIcon);
|
textToSqliteAction->setIcon(convertIcon);
|
||||||
sqliteToTextAction->setIcon(convertIcon);
|
sqliteToTextAction->setIcon(convertIcon);
|
||||||
|
|
||||||
contextMenu = new QMenu(this);
|
firstColMenu = new QMenu(this);
|
||||||
QAction* addRowAboveAction = contextMenu->addAction(tr("向上添加一行"));
|
QAction* addRowAboveAction = firstColMenu->addAction(tr("↑ 向上添加一行"));
|
||||||
QAction* addRowBelowAction = contextMenu->addAction(tr("向下添加一行"));
|
QAction* addRowBelowAction = firstColMenu->addAction(tr("向下添加一行 ↓"));
|
||||||
connect(addRowAboveAction, &QAction::triggered, this, &MainWindow::onAddRowAboveActionTriggered);
|
connect(addRowAboveAction, &QAction::triggered, this, &MainWindow::onAddRowAboveActionTriggered);
|
||||||
connect(addRowBelowAction, &QAction::triggered, this, &MainWindow::onAddRowBelowActionTriggered);
|
connect(addRowBelowAction, &QAction::triggered, this, &MainWindow::onAddRowBelowActionTriggered);
|
||||||
|
|
||||||
|
firstRowMenu = new QMenu(this);
|
||||||
|
QAction* addColAboveAction = firstRowMenu->addAction(tr("← 向左添加一列"));
|
||||||
|
QAction* addColBelowAction = firstRowMenu->addAction(tr("向右添加一列 →"));
|
||||||
|
connect(addColAboveAction, &QAction::triggered, this, &MainWindow::onAddColAboveActionTriggered);
|
||||||
|
connect(addColBelowAction, &QAction::triggered, this, &MainWindow::onAddColBelowActionTriggered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,16 +72,21 @@ void MainWindow::contextMenuEvent(QContextMenuEvent* event)
|
||||||
{
|
{
|
||||||
QPoint cellPos = ui->tableWidget->viewport()->mapFromGlobal(event->globalPos());
|
QPoint cellPos = ui->tableWidget->viewport()->mapFromGlobal(event->globalPos());
|
||||||
int currentColumn = ui->tableWidget->horizontalHeader()->logicalIndexAt(cellPos.x());
|
int currentColumn = ui->tableWidget->horizontalHeader()->logicalIndexAt(cellPos.x());
|
||||||
|
int currentRow = ui->tableWidget->rowAt(cellPos.y());
|
||||||
|
|
||||||
if (currentColumn == -1)
|
if (currentColumn == -1 && currentRow == -1) {
|
||||||
{
|
// 没有选中行也没有选中列,不显示菜单
|
||||||
int currentRow = ui->tableWidget->rowAt(cellPos.y());
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (currentRow >= 0)
|
if (currentColumn == -1 && currentRow >= 0) {
|
||||||
{
|
// 选中了行,显示行菜单
|
||||||
ui->tableWidget->selectRow(currentRow); // Select the clicked row
|
ui->tableWidget->selectRow(currentRow);
|
||||||
contextMenu->popup(event->globalPos());
|
firstColMenu->popup(event->globalPos());
|
||||||
}
|
} else if (currentColumn >= 0 && currentRow == -1) {
|
||||||
|
// 选中了列,显示列菜单
|
||||||
|
ui->tableWidget->selectColumn(currentColumn);
|
||||||
|
firstRowMenu->popup(event->globalPos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,13 +105,6 @@ void MainWindow::onAddRowAboveActionTriggered()
|
||||||
tableWidget->insertRow(newRow);
|
tableWidget->insertRow(newRow);
|
||||||
currentRow = newRow;
|
currentRow = newRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 填充插入的行为空项
|
|
||||||
for (int column = 0; column < tableWidget->columnCount(); ++column)
|
|
||||||
{
|
|
||||||
QTableWidgetItem* emptyItem = new QTableWidgetItem("");
|
|
||||||
tableWidget->setItem(currentRow, column, emptyItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onAddRowBelowActionTriggered()
|
void MainWindow::onAddRowBelowActionTriggered()
|
||||||
|
@ -117,12 +121,38 @@ void MainWindow::onAddRowBelowActionTriggered()
|
||||||
int newRow = tableWidget->rowCount();
|
int newRow = tableWidget->rowCount();
|
||||||
tableWidget->insertRow(newRow);
|
tableWidget->insertRow(newRow);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 填充插入的行为空项
|
void MainWindow::onAddColAboveActionTriggered()
|
||||||
for (int column = 0; column < tableWidget->columnCount(); ++column)
|
{
|
||||||
|
QTableWidget* tableWidget = ui->tableWidget;
|
||||||
|
int currentColumn = tableWidget->currentColumn();
|
||||||
|
if (currentColumn >= 0)
|
||||||
{
|
{
|
||||||
QTableWidgetItem* emptyItem = new QTableWidgetItem("");
|
tableWidget->insertColumn(currentColumn);
|
||||||
tableWidget->setItem(currentRow + 1, column, emptyItem);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果没有选中列,在末尾追加一列
|
||||||
|
int newColumn = tableWidget->columnCount();
|
||||||
|
tableWidget->insertColumn(newColumn);
|
||||||
|
currentColumn = newColumn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onAddColBelowActionTriggered()
|
||||||
|
{
|
||||||
|
QTableWidget* tableWidget = ui->tableWidget;
|
||||||
|
int currentColumn = tableWidget->currentColumn();
|
||||||
|
if (currentColumn >= 0)
|
||||||
|
{
|
||||||
|
tableWidget->insertColumn(currentColumn + 1); // 在右侧插入一列
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果没有选中列,在末尾追加一列
|
||||||
|
int newColumn = tableWidget->columnCount();
|
||||||
|
tableWidget->insertColumn(newColumn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,12 +33,15 @@ private slots:
|
||||||
void onSaveAsButtonClicked();
|
void onSaveAsButtonClicked();
|
||||||
void onAddRowAboveActionTriggered();
|
void onAddRowAboveActionTriggered();
|
||||||
void onAddRowBelowActionTriggered();
|
void onAddRowBelowActionTriggered();
|
||||||
|
void onAddColAboveActionTriggered();
|
||||||
|
void onAddColBelowActionTriggered();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
QProgressDialog* progressDialog;
|
QProgressDialog* progressDialog;
|
||||||
QString openFilePath;
|
QString openFilePath;
|
||||||
QMenu* contextMenu; // 右键菜单
|
QMenu* firstColMenu; // 右键菜单
|
||||||
|
QMenu* firstRowMenu; // 右键菜单
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
Loading…
Reference in New Issue
Block a user