我的是一个mainwindow.ui 点击屏幕后 跳转至measresult.ui 显示出来的
如图被单击:
mainwindow.h 头文件:
public:
//构造函数
explicit MainWindow(QWidget *parent = 0);
//析构函数
~MainWindow();
//设定虚函数
virtual void mouseReleaseEvent(QMouseEvent *event); //鼠标事件
mainwindow.cpp 代码:单击代码()
/*
* 2.鼠标单击按钮 显示窗口
**/
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
int wd,hi,x,y;
if(event->button() == Qt::LeftButton){
wd = this->geometry().width(); //获取当前界面宽度并赋值
hi = this->geometry().height(); //获取当前页面高度并赋值
x = event->pos().x(); //鼠标所在X位置
y = event->pos().y(); //鼠标所在Y位置
//在按钮所在的窗口区域触发
if(y>120){
//弹出新的窗口
MeasResult result;
result.exec();
}
}
}
对应的measresult.h头文件:
#include
#include
#include
measresult.cpp源文件:
#include
#include
#include
MeasResult::MeasResult(QWidget *parent) :
QDialog(parent),
ui(new Ui::MeasResult)
{
ui->setupUi(this);
//提供了用于存储自定义数据的通用模型
QStandardItemModel *model = new QStandardItemModel(4,6);
// model->setHeaderData(0,Qt::Horizontal,tr("第一列"));
// model->setHeaderData(1,Qt::Horizontal,tr("第二列"));
// model->setHeaderData(2,Qt::Horizontal,tr("第三列"));
// model->setHeaderData(3,Qt::Horizontal,tr("第四列"));
// model->setHeaderData(4,Qt::Horizontal,tr("第五列"));
// model->setHeaderData(5,Qt::Horizontal,tr("第六列"));
//插入数据
model->insertRows(0,1); //插入第一行
model->setData(model->index(0,0), tr("产品型号")); //插入第一列
model->setData(model->index(0,1), tr("电压结果"));
model->setData(model->index(0,2), tr("电压判定"));
model->setData(model->index(0,3), tr("电流结果"));
model->setData(model->index(0,4), tr("电流判定"));
model->setData(model->index(0,5), tr("结果判定"));
model->insertRows(1,1); //插入第二行
model->setData(model->index(1,0), qrand()%1000+1000); //插入第二列 插入一个1000-2000的随机数
model->setData(model->index(1,1), qrand()%1000+1000);
model->setData(model->index(1,2), qrand()%1000+1000);
model->setData(model->index(1,3), qrand()%1000+1000);
model->setData(model->index(1,4), qrand()%1000+1000);
model->setData(model->index(1,5), qrand()%1000+1000);
model->insertRows(2,1); //插入第三行
model->setData(model->index(2,0), tr("结果判定"));
model->setData(model->index(2,1), tr("电压上限"));
model->setData(model->index(2,2), tr("电压下限"));
model->setData(model->index(2,3), tr("电流上限"));
model->setData(model->index(2,4), tr("电流下限"));
model->setData(model->index(2,5), tr("通道数"));
model->insertRows(3,1); //插入第四行
model->setData(model->index(3,0), qrand()%1000+1000);
model->setData(model->index(3,1), qrand()%1000+1000);
model->setData(model->index(3,2), qrand()%1000+1000);
model->setData(model->index(3,3), qrand()%1000+1000);
model->setData(model->index(3,4), qrand()%1000+1000);
model->setData(model->index(3,5), qrand()%1000+1000);
ui->tableView->horizontalHeader()->setVisible(false);//显示或隐藏表头
ui->tableView->verticalHeader()->setVisible(false);//显示或隐藏序列行
ui->tableView->setAutoScroll(false);//自动滚动条
//ui->tableView->resizeColumnsToContents(); //根据内容调整大小
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//根据容器调整大小
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选中模式为选中行
ui->tableView->setSelectionMode( QAbstractItemView::SingleSelection); //设置选中单行
ui->tableView->setModel(model); //使用
}
当然 如果往后续增 可以先获取总行数
int rowCount = tableView-> model()-> rowCount();
然后皆可以累加行数了
void ParamSetting::on_deleteTestProject_clicked()
{
int curRow; //被选中的行
QModelIndex index = ui->showTestProjectTableView->currentIndex(); //被选中行的的数据信息
//1.获取需要操作的基本信息
curRow = tableViewCurrentIndex();
//2.1新建按钮
QPushButton *okbtn = new QPushButton(tr("确定"));
QPushButton *cancelbtn = new QPushButton(tr("取消"));
//2.2新建提示框
QMessageBox *mymsgbox = new QMessageBox;
//2.3将补全提示框信息
mymsgbox->setIcon(QMessageBox::Warning);
mymsgbox->setWindowTitle(tr("提示"));
mymsgbox->setText(tr("是否删除检查项目:"));
mymsgbox->addButton(okbtn, QMessageBox::AcceptRole);
mymsgbox->addButton(cancelbtn, QMessageBox::RejectRole);
mymsgbox->show(); //展示提示框
mymsgbox->exec(); //将对话框显示为模态对话框
//3 是否做删除操作
if (mymsgbox->clickedButton() == okbtn)//点击了OK按钮
{
//3.1删除一条信息
ui->showTestProjectTableView->model()->removeRow(curRow);
//3.1.2页面删除后 数据库对应信息也删除*************
}
else{
qDebug() << "取消删除";
//3.2.1不做操作
}
}
直接在表格上修改即可 , 或者怕误操作 ,设置为不可编辑模式(上面的只读),设置编辑按钮,点击编辑后把只读关闭,修改完毕后再改回来。
(如果涉及数据库的操作,修改后对应的行进行修改即可)
谢谢观看 一起学习 [email protected]
今天准备尝试做文件的导出,需要用到行数、列数,找了一圈没找到是什么,就依次看函数,终于找到了。
//QTablewidget 获取数据的列数
// int columnCount=tableWidget->columnCount();
int columnCount = ui->tableView->model()->columnCount();
//QTableView 获取数据的行数
int rowCount=ui->tableView->model()->rowCount();
这样就可以获取到你当前表格的行数和列数了。