QT表格双击弹出对话框

QT版本5.0.3

文章目录

  • QT表格双击弹出对话框
    • 1.效果预览
    • 2.新建项目
    • 3.添加表格类
    • 4.创建对话框类
      • 4.1 创建对话框类
      • 4.2 在mydialog.h中定义对话框widget
      • 4.3 在mydialog.cpp实例化对话框
    • 5.将表格添加到主窗口以及弹出对话框
      • 5.1在mainwindow.h中声明表格和对话框
      • 5.2 在mainwindow.cpp中实例化表格和对话框并实现显示对话框
    • 6.运行

1.效果预览

2.新建项目

打开QT,文件>新建文件或项目>选择应用程序,选择QTGUI应用>输入项目名称:Table>一直选择下一步>完成。注意取消勾选创建界面按钮。

3.添加表格类

在项目文件下右键单击>添加新文件>C++类>将类名MyTableWidget,基类设置为QTableWidget>点击下一步直到完成

记得在输入类名界面将基类的类型信息改为QWidget

将会生成两个文件:mytablewidget.hmytablewidget.cppmytablewidget.h负责定义表格属性,mytablewidget.cpp负责实现表格。修改mytablewidget.cpp如下:

#include "mytablewidget.h"
//引入表头视图
#include <QHeaderView>
#include <QPushButton>
MyTableWidget::MyTableWidget(QWidget *parent):QTableWidget(parent)
{setColumnCount(9);//设置列数setRowCount(10);//设置行数//表头setHorizontalHeaderLabels(QStringList()<<"编号"<<"姓名"<<"年龄"<<"受教育程度"<<"民族"<<"专业"<<"职称"<<"部门"<<"职务");//表头单元格背景色和字体setStyleSheet(QString( "QTableWidget QHeaderView::section{background:#2a9ee4;font-weight:bold;}"));horizontalHeader()->setStretchLastSection(true);//设置表格的列随窗口拉伸verticalHeader()->hide();//隐藏竖直表头horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //表格列宽自适应setSelectionBehavior(QAbstractItemView::SelectRows);//单击选择类型为行setEditTriggers(QAbstractItemView::NoEditTriggers);//禁用表格双击修改
}

mytablewidget.h目前还不需要设置。

4.创建对话框类

4.1 创建对话框类

在项目文件下右键单击>添加新文件>C++类>将类名MyDialog,基类设置为QDialog>点击下一步直到完成

4.2 在mydialog.h中定义对话框widget

#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>
#include <QLineEdit>
#include <QComboBox>
#include <QHBoxLayout>
class MyDialog : public QDialog
{Q_OBJECT
public:explicit MyDialog(QWidget *parent = 0);private://定义对话框控件QLabel *noLabel;//编号标签QLineEdit *noInput;//编号输入框QLabel *nameLabel;//姓名标签QLineEdit *nameInput;//姓名输入框QLabel *ageLabel;//年龄标签QLineEdit *ageInput;//年龄输入框QLabel *educationLabel;//受教育程度标签QComboBox *educationComBox;//受教育程度下拉选择框QLabel *nationLabel;//民族标签QComboBox *nationComBox;//民族下拉选择框QLabel *majorLabel;//专业标签QLineEdit *majorInput;//专业输入框QLabel *positionLabel;//职称标签QComboBox *positionComBox;//职称下拉选择框QLabel *departmentLabel;//部门标签QComboBox *departmentComBox;//部门下拉选择框QLabel *jobLabel;//职务标签QComboBox *jobComBox;//职务下拉选择框QPushButton *saveButton;//保存修改按钮QPushButton *cancelButton;//取消修改按钮QPushButton *closeButton;//关闭对话框按钮QGridLayout *bottomBarLayout;//保存上述按钮的布局QGridLayout *mainLayout;//对话框主布局signals:public slots:};#endif // MYDIALOG_H

4.3 在mydialog.cpp实例化对话框

#include "mydialog.h"MyDialog::MyDialog(QWidget *parent) :QDialog(parent)
{//实例化头文件中声明的控件noLabel=new QLabel;//编号标签noLabel->setText(tr("编号:"));noInput = new QLineEdit;//编号输入框nameLabel=new QLabel;//姓名标签nameLabel->setText(tr("姓名"));nameInput = new QLineEdit;//姓名输入框ageLabel = new QLabel(tr("年龄:"));//年龄标签ageInput = new QLineEdit;//年龄输入框educationLabel=new QLabel;//受教育程度标签educationLabel->setText(tr("受教育程度:"));educationComBox = new QComboBox;//受教育程度下拉选择框QStringList educationList;//受教育程度列表educationList << "小学"<<"初中"<<"高中"<<"本科"<<"专科"<<"硕士"<<"博士";for(int i=0;i<educationList.size();i++){//添加下拉框选项educationComBox->addItem(educationList.at(i));}nationLabel=new QLabel;//民族标签nationLabel->setText(tr("民族:"));nationComBox = new QComboBox;//民族下拉选择框QStringList nationList;//民族列表nationList<<"壮族"<<"藏族"<<"裕固族"<<"彝族"<<"瑶族"<<"锡伯族"<<"乌孜别克族"<<"维吾尔族"<<"佤族"<<"土家族"<<"土族"<<"塔塔尔族"<<"塔吉克族"<<"水族"<<"畲族"<<"撒拉族"<<"羌族"<<"普米族"<<"怒族"<<"纳西族"<<"仫佬族"<<"苗族"<<"蒙古族"<<"门巴族"<<"毛南族"<<"满族"<<"珞巴族"<<"僳僳族"<<"黎族"<<"拉祜族"<<"柯尔克孜族"<<"景颇族"<<"京族"<<"基诺族"<<"回族"<<"赫哲族"<<"哈萨克族"<<"哈尼族"<<"仡佬族"<<"高山族"<<"鄂温克族"<<"鄂伦春族"<<"独龙族"<<"东乡族"<<"侗族"<<"德昂族"<<"傣族"<<"达斡尔族"<<"朝鲜族"<<"布依族"<<"保安族"<<"布朗族"<<"白族"<<"阿昌族"<<"汉族"<<"俄罗斯族";for(int i=0;i<nationList.size();i++){nationComBox->addItem(nationList.at(i));//添加民族选项}majorLabel=new QLabel;//专业标签majorLabel->setText(tr("专业:"));majorInput = new QLineEdit;//专业输入框positionLabel=new QLabel;//职称标签positionLabel->setText(tr("职称:"));positionComBox = new QComboBox;QStringList positionList;positionList<<"助理工程师"<<"工程师"<<"高级工程师"<<"教授级高级工程师";for(int i=0;i<positionList.size();i++){positionComBox->addItem(positionList.at(i));}departmentLabel=new QLabel;//部门标签departmentLabel->setText(tr("部门:"));departmentComBox = new QComboBox;//部门下拉选择框QStringList departmentList;departmentList<<"人事部"<<"技术部"<<"后勤部"<<"信息部";for(int i=0;i<departmentList.size();i++){departmentComBox->addItem(departmentList.at(i));}jobLabel=new QLabel;//职务标签jobLabel->setText(tr("职务:"));jobComBox = new QComboBox;QStringList jobList;jobList<<"普通员工"<<"工程师"<<"团队领导"<<"部门领导"<<"公司领导";for(int i=0;i<jobList.size();i++){jobComBox->addItem(jobList.at(i));}saveButton=new QPushButton;//保存修改按钮saveButton->setText(tr("保存"));cancelButton=new QPushButton;//取消修改按钮cancelButton->setText(tr("取消"));//取消修改按钮closeButton = new QPushButton(tr("关闭"));//关闭对话框按钮bottomBarLayout = new QGridLayout;//保存上述按钮的布局bottomBarLayout->setSpacing(10);bottomBarLayout->setMargin(15);//添加按钮到底部栏bottomBarLayout->addWidget(saveButton,0,0);bottomBarLayout->addWidget(cancelButton,0,1);bottomBarLayout->addWidget(closeButton,0,2);mainLayout=new QGridLayout(this);//实例化对话框主布局//添加窗口控件到主布局//编号mainLayout->addWidget(noLabel,0,0);mainLayout->addWidget(noInput,0,1);//姓名mainLayout->addWidget(nameLabel,1,0);mainLayout->addWidget(nameInput,1,1);//年龄mainLayout->addWidget(ageLabel,2,0);mainLayout->addWidget(ageInput,2,1);//受教育程度mainLayout->addWidget(educationLabel,3,0);mainLayout->addWidget(educationComBox,3,1);//民族mainLayout->addWidget(nationLabel,4,0);mainLayout->addWidget(nationComBox,4,1);//专业mainLayout->addWidget(majorLabel,5,0);mainLayout->addWidget(majorInput,5,1);//职称mainLayout->addWidget(positionLabel,6,0);mainLayout->addWidget(positionComBox,6,1);//部门mainLayout->addWidget(departmentLabel,7,0);mainLayout->addWidget(departmentComBox,7,1);//职务mainLayout->addWidget(jobLabel,8,0);mainLayout->addWidget(jobComBox,8,1);//添加底部工具条布局mainLayout->addLayout(bottomBarLayout,9,0);}

5.将表格添加到主窗口以及弹出对话框

5.1在mainwindow.h中声明表格和对话框

mainwindow.h中声明表格和对话框,并声明一个显示对话框的槽函数(slots)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <mytablewidget.h>
#include <mydialog.h>
class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = 0);~MainWindow();
private://表格MyTableWidget *table;//对话框MyDialog *dialog;
private slots://显示对话框void showDialog();
};#endif // MAINWINDOW_H

5.2 在mainwindow.cpp中实例化表格和对话框并实现显示对话框

#include "mainwindow.h"
#include <mytablewidget.h>
#include <mydialog.h>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{setMinimumSize(1200,600);//设置窗口的最小尺寸1200x800table = new MyTableWidget(this);//实例化表格setCentralWidget(table);//添加表格到窗口中dialog = new MyDialog(this);//关联表格点击和显示对话框的槽函数connect(table,SIGNAL(cellDoubleClicked(int,int)),this,SLOT(showDialog()));
}MainWindow::~MainWindow()
{}
//实现显示对话框的方法
void MainWindow::showDialog(){dialog->show();//显示弹窗
}

6.运行

注意:运行之前请取消项目>Shadow Build,否则运行不成功。

运行效果

QT表格双击弹出对话框相关推荐

  1. QT学习笔记(六)——QT弹出对话框并在主窗口调用对话框的信息

    QT弹出对话框并在主窗口调用对话框的信息,显示影像 最近封控,大部分时间都在自己学习写代码,有点feel 了哈,自己摸出来一个简单的qt 界面,也实现了自己想要的功能.本篇博客主要记录一下,如何弹出对 ...

  2. Qt之点击PushButton弹出对话框

    Qt之点击PushButton弹出对话框 概述: 代码示例: .h .cpp 运行效果图: over: 文末一句话: 概述: 在日常项目中会经常遇到点击按钮弹出对话框,今天分享个简单示例: 1.需要包 ...

  3. windows7关闭计算机对话框,电脑弹出对话框很烦人怎么办?win7禁止对话框弹出的方法...

    在使用win7系统的过程中,如果系统中出现了错误或者是有某种提示的时候,,系统就会自动弹出一个提示框来提醒用户,但是有时候一些无关紧要的提示也会弹出来,这就非常的烦人了,所以有的用户想设置禁止对话框弹 ...

  4. ABAP 弹出对话框

    一组有用的用户交互窗口函数 显示多条消息 SAP系统用的是这个函数:C14Z_MESSAGES_SHOW_AS_POPUP POPUP_TO_CONFIRM_LOSS_OF_DATA 显示有YES/N ...

  5. 3种MFC弹出对话框的方法

    一.点击菜单按钮弹出对话框 1.在资源视图中(.rc文件夹下)找到menu,选择需要弹框的菜单项: 2.点击菜单项,修改菜单ID,在主程序中用ON_COMMAND()将ID和函数关联,要在主程序的头文 ...

  6. MFC弹出对话框几种方法总结

    目录 一.点击菜单按钮弹出对话框 二.用MessageBox()函数弹框 三.MFC对话框鼠标右键弹出菜单,点击菜单弹出对话框 一.点击菜单按钮弹出对话框 1.在资源视图中(.rc文件夹下)找到men ...

  7. java fx alert_javaFx:使用弹出对话框 Alert

    javaFx8 自带的对话框非常好用,类似的使用方式如下: /** * 弹出一个通用的确定对话框 * @param p_header 对话框的信息标题 * @param p_message 对话框的信 ...

  8. ASP.NET弹出对话框几种基本方法【】

    来源:http://www.cnblogs.com/langge/archive/2009/10/24/1589043.html 我们在.NET程序的开发过程中,常常需要和用户进行信息交互,比如执行某 ...

  9. C++中各种弹出对话框

    #include<windows.h> #include<cstdio> int main(){int x;x=MessageBox(GetForegroundWindow() ...

最新文章

  1. 项目中使用oracle序列
  2. 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案
  3. 为什么手机上传图片这么慢 前端_怎样在手机上就能把图片压缩到100K以下?
  4. BZOJ-2588-Count-on-a-tree-SPOJ10628-LCA+主席树
  5. 在Azure Cosmos DB里设置filter搜索记录
  6. mysql itpub_mysql
  7. 【Codeforces】925A Stairs and Elevators【贪心】
  8. 2017.6.23 染色 思考记录
  9. eclipse中open resource.不显示class文件
  10. windows抓包工具——Fiddler配置及使用、手机抓包(iPhone、安卓)
  11. Linux学习之安装配置VM虚拟机
  12. Linux驱动-platform设备驱动
  13. 微信公众号开发之流式数据读取
  14. 十大众筹PC:硅谷新生代如何打造下一代计算机
  15. Linux LCD 驱动
  16. 机器学习 - 统计学中的均值、方差、标准差
  17. python按照号段生成手机号接收验证码,「 python 」 python 实现短信验证码
  18. 力扣977有序数组的平方(c++版)
  19. 2012浙大招收比例
  20. (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623

热门文章

  1. java实现分段线性插值_插值算法
  2. matlab chebyshev插值,Matlab之插值
  3. RPA:帮助企业完成财务数字化转型
  4. SD 分离Alpha通道
  5. 简略的meanshift算法
  6. displaytag的Excel导出实践
  7. 高通android智能平台环境搭建_编译流程分析,高通平台环境搭建,编译,系统引导流程分析参考...
  8. 【全】正则表达式语法
  9. html js 正则表达式语法大全,js正则表达式语法大全(JS regular expression syntax Daquan).doc...
  10. 一级市场和二级市场的区别(本质就是申赎和买卖的区别)