-
2019-08-14 10:02:41
- Alt + Shift + N:在当前XShell新建选项卡。
- Ctrl + Shift + F4:关闭当前选项卡。
更多相关内容 -
tab选项卡跳转,在iframe里面新建选项卡和跳转选项卡
2017-11-14 12:19:04add(title,url){ //title 选项卡的名字 //url 选项卡的链接地址 var parent$ = self.parent.$; //找到父级DOM if (parent$('#tabs').tabs('exists', title)){ parent$('#tabs').tabs('select', ...- function addTab(title, url){
- if ($('#tt').tabs('exists', title)){
- $('#tt').tabs('select', title);
- } else {
- $('#tt').tabs('add',{
- title:title,
- href:url, //tab中显示的内容
- closable:true
- });
- }
- }
第二种以iframe的方式:
- function addTab(title, url){
- if ($('#tt').tabs('exists', title)){
- $('#tt').tabs('select', title);
- } else {
- var content = '<iframe scrolling="auto" frameborder="0" src="'+url+'" style="width:100%;height:100%;"></iframe>';
- $('#tt').tabs('add',{
- title:title,
- content:content, //tab中显示的内容
- closable:true
- });
- }
- }
想要实现点击tab内容中的链接,在父级中tab上新增一个tab的话,须以iframe方式来添加父级tab。在tab内容中,即url页面中,需要在链接上实现下面这个方法:
-
Qt5:TabWidget选项卡
2018-11-12 10:31:02Qt的Tab Widget控件会创建一个标签栏,标签栏上可以创建很多选项卡,默认自动生成两个(tab和tab_2),其它的自己添加,而每个选项卡又控制着一个界面,切换不同的选项卡就会跳转到相应的界面,实现了资源共享的功能...Qt的Tab Widget控件会创建一个标签栏,标签栏上可以创建很多选项卡,默认自动生成两个(tab和tab_2),其它的自己添加,而每个选项卡又控制着一个界面,切换不同的选项卡就会跳转到相应的界面,实现了资源共享的功能。
简单示例
这个简单示例是根据官方文档使用代码来创建选项卡,没有使用Qt设计师添加,Qt设计师只是添加了一个Tab Widget标签栏。打开Qt,新建一个Qt Widgets Application项目,转到设计师模式,从左侧工具栏添加一个Tab Widget控件到窗口上,调整Tab Widget控件的大小,修改Tab Widget控件的对象名为tabWidget,然后添加如下代码:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDebug" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle(tr("TabWidget"));//设置标题 ui->tabWidget->clear();//清空选项卡 QWidget *tabSports=new QWidget(this); QWidget *tabMusic=new QWidget(this); QWidget *tabSoftware=new QWidget(this); QWidget *tabDigital=new QWidget(this); QWidget *tabLanguage=new QWidget(this); ui->tabWidget->setTabPosition(QTabWidget::North);//设置选项卡的方位东南西北,默认在上方 ui->tabWidget->addTab(tabSports,tr("运动"));//在后面添加选项卡 ui->tabWidget->addTab(tabMusic,tr("音乐")); ui->tabWidget->addTab(tabSoftware,QIcon("F:\\磊神图片\\icons\\1.ico"),tr("软件"));//在后面添加带图标的选项卡 ui->tabWidget->insertTab(3,tabDigital,tr("数码"));//插入选项卡 ui->tabWidget->insertTab(4,tabLanguage,QIcon("F:\\磊神图片\\icons\\3.ico"),tr("语言"));//插入带图标的选项卡 ui->tabWidget->setTabShape(QTabWidget::Triangular);//设置选项卡的形状 //ui->tabWidget->removeTab(0);//移除选项卡 ui->tabWidget->setTabIcon(0,QIcon("F:\\磊神图片\\icons\\2.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(1,QIcon("F:\\磊神图片\\icons\\4.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(3,QIcon("F:\\磊神图片\\icons\\5.ico"));//设置选项卡图标 ui->tabWidget->setIconSize(QSize(50,25));//设置图标的大小(选项卡的大小也会改变) ui->tabWidget->setMovable(true); ui->tabWidget->setTabsClosable(true);//在选项卡上添加关闭按钮 qDebug()<<"第一个选项卡名称:"<<ui->tabWidget->tabText(0);//获取选项卡名称 qDebug()<<"iconSize:"<<ui->tabWidget->iconSize();//获取icon的尺寸 ui->tabWidget->setTabEnabled(0,false);//禁用选项卡 ui->tabWidget->setTabEnabled(1,false); ui->tabWidget->setTabToolTip(2,tr("Beautiful"));//鼠标悬停弹出提示 ui->tabWidget->usesScrollButtons();//选项卡太多滚动 //ui->tabWidget->removeTab(0);//移除选项卡 //ui->tabWidget->setTabWhatsThis(3,tr("Beautiful Girl"));//不知道干嘛的 //ui->tabWidget->setTabBarAutoHide(true);//包含少于2个选项卡时会自动隐藏 //ui->tabWidget->setTabText(0,tr("软件"));//按索引修改选项卡的名称 //ui->tabWidget->setTabText(1,tr("舞蹈")); //ui->tabWidget->setDocumentMode(true);//设置选项卡是否以适合文档页面的模式呈现 //ui->tabWidget->setElideMode(Qt::ElideLeft);//标签栏中删除文字 //ui->tabWidget->clear();//清空选项卡 } MainWindow::~MainWindow() { delete ui; }
显示效果
综合示例
综合示例Tab Widget选项卡控制着表格、柱状图、按钮和编辑框、树部件、列表部件的显示,里面用到了QCustomPlot类绘制柱状图,需要添加一些东西,使用方法请看另一篇文章:https://blog.csdn.net/mars_xiaolei/article/details/83281209。打开Qt,新建一个Qt Widgets Application项目,转到设计师模式,从左侧工具栏添加一个Tab Widget控件到窗口上,调整Tab Widget控件的大小,修改Tab Widget控件的对象名为tabWidget,选项卡和其它控件都是要自己添加的,每个选项卡控制这一个界面,然后添加如下代码:
pro文件
#------------------------------------------------ # # Project created by QtCreator 2018-11-09T13:39:09 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport TARGET = QTabWidget TEMPLATE = app # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp \ qcustomplot.cpp HEADERS += \ mainwindow.h \ qcustomplot.h FORMS += \ mainwindow.ui
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDebug" #include <QTableWidget>//表格 #include <QTableWidgetItem>//表格 #include "qcustomplot.h" #include <QTreeWidget> #include "QStringList" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle(tr("TabWidget"));//设置标题 ui->tabWidget->setTabPosition(QTabWidget::North);//设置选项卡的方位东南西北,默认在上方 //ui->tabWidget->setTabShape(QTabWidget::Triangular);//设置选项卡的形状 ui->tabWidget->setTabIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\1.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(1,QIcon("E:\\Qt_Project\\QTabWidget\\2.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(2,QIcon("E:\\Qt_Project\\QTabWidget\\3.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(3,QIcon("E:\\Qt_Project\\QTabWidget\\4.ico"));//设置选项卡图标 ui->tabWidget->setTabIcon(4,QIcon("E:\\Qt_Project\\QTabWidget\\5.ico"));//设置选项卡图标 ui->tabWidget->setIconSize(QSize(50,25));//设置图标的大小(选项卡的大小也会改变) ui->tabWidget->setMovable(true); ui->tabWidget->setTabsClosable(true);//在选项卡上添加关闭按钮 qDebug()<<"第一个选项卡名称:"<<ui->tabWidget->tabText(0);//获取选项卡名称 qDebug()<<"iconSize:"<<ui->tabWidget->iconSize();//获取icon的尺寸 //ui->tabWidget->clear();//清空选项卡 /* * 运动选项卡 */ ui->tableWidgetSports->setColumnCount(6);//设置列数 ui->tableWidgetSports->setRowCount(10);//设置行数 ui->tableWidgetSports->setWindowTitle("QTableWidget"); QStringList m_Header; m_Header<<QString("田径")<<QString("篮球")<<QString("足球")<<QString("乒乓球")<<QString("羽毛球")<<QString("游泳"); ui->tableWidgetSports->setHorizontalHeaderLabels(m_Header);//添加横向表头 ui->tableWidgetSports->verticalHeader()->setVisible(true);//纵向表头可视化 ui->tableWidgetSports->horizontalHeader()->setVisible(true);//横向表头可视化 //ui->tableWidget->setShowGrid(false);//隐藏栅格 ui->tableWidgetSports->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置编辑方式:禁止编辑表格 ui->tableWidgetSports->setSelectionBehavior(QAbstractItemView::SelectRows);//设置表格选择方式:设置表格为整行选中 //ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);//设置表格选择方式:设置表格为整列选中 ui->tableWidgetSports->setSelectionMode(QAbstractItemView::SingleSelection);//选择目标方式 ui->tableWidgetSports->setStyleSheet("selection-background-color:pink");//设置选中颜色:粉色 for(int rows=0;rows<10;rows++) { for(int columns=0;columns<6;columns++) { if(columns==0) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("刘翔")); } else if(columns==1) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("姚明")); } else if(columns==2) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("C罗")); } else if(columns==3) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("马林")); } else if(columns==4) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("林丹")); } else if(columns==5) { ui->tableWidgetSports->setItem(rows,columns,new QTableWidgetItem("孙杨")); } } } for(int rows=0;rows<10;rows++) { for(int columns=0;columns<6;columns++) { ui->tableWidgetSports->setColumnWidth(columns,125); ui->tableWidgetSports->setRowHeight(rows,30); ui->tableWidgetSports->item(rows,columns)->setTextAlignment(Qt::AlignCenter);//居中显示 ui->tableWidgetSports->item(rows,columns)->setBackgroundColor(QColor(85,170,255));//设置前景颜色 ui->tableWidgetSports->item(rows,columns)->setTextColor(QColor(0,0,0));//设置文本颜色 ui->tableWidgetSports->item(rows,columns)->setFont(QFont("Helvetica"));//设置字体为黑体 } } //音乐选项卡 ui->qCustomPlotMusic->plotLayout()->insertRow(0); ui->qCustomPlotMusic->plotLayout()->addElement(0, 0, new QCPTextElement(ui->qCustomPlotMusic, "网易云音乐播放和评论统计图", QFont("微软雅黑",12, QFont::Bold))); // set dark background gradient设置暗背景梯度: QLinearGradient gradient(0, 0, 0, 400); gradient.setColorAt(0, QColor(200, 150, 220)); gradient.setColorAt(0.56, QColor(200, 150, 200)); gradient.setColorAt(1, QColor(220, 150, 200)); ui->qCustomPlotMusic->setBackground(QBrush(gradient)); // create empty bar chart objects创建三个空的条形图对象: QCPBars *LoveTime = new QCPBars(ui->qCustomPlotMusic->xAxis, ui->qCustomPlotMusic->yAxis);//播放 QCPBars *LoveTimes = new QCPBars(ui->qCustomPlotMusic->xAxis, ui->qCustomPlotMusic->yAxis2);//评论 //将LatencyTime和ErrorTimes并排显示 QCPBarsGroup *group = new QCPBarsGroup(ui->qCustomPlotMusic); LoveTime->setBarsGroup(group); LoveTimes->setBarsGroup(group); //设置抗锯齿 LoveTime->setAntialiased(false); // gives more crisp, pixel aligned bar borders:提供更清晰,像素对齐的条形边框 LoveTimes->setAntialiased(false); //设置叠加差距 //LatencyTime->setStackingGap(1); //ErrorTimes->setStackingGap(1); //fossil->setStackingGap(1); // set names and colors设置名称和颜色: LoveTimes->setWidth(0.3);//设置宽度 //ErrorTimes->setWidthType("wtPlotCoords");//wtAbsolute:wtAxisRectRatio:wtPlotCoords设置宽度 LoveTimes->setName("评论"); LoveTimes->setPen(QPen(QColor(250, 170, 20).lighter(150))); LoveTimes->setBrush(QColor(250, 170, 20)); LoveTime->setWidth(0.3);//设置宽度 //LatencyTime->setWidthType("wtPlotCoords");//wtAbsolute:wtAxisRectRatio:wtPlotCoords设置宽度 LoveTime->setName("播放"); LoveTime->setPen(QPen(QColor(0, 168, 140).lighter(130))); LoveTime->setBrush(QColor(0, 168, 140)); // stack bars on top of each other把一个Bar叠加在另外一个Bar上面 //ErrorTimes->moveAbove(fossil); //LatencyTime->moveAbove(ErrorTimes); //绘制xAxis QVector<double> ticks; QVector<QString> labels; ticks << 1 << 2 << 3 << 4 << 5 << 6 << 7<<8; labels << "盗将行" << "流浪" << "倒数" << "沙漠骆驼" << "爱的故事" << "成都" << "38度6"<<"卡路里"; QSharedPointer<QCPAxisTickerText> textTicker(new QCPAxisTickerText); textTicker->addTicks(ticks, labels); ui->qCustomPlotMusic->xAxis->setTicker(textTicker);//设置刻度标记CH ui->qCustomPlotMusic->xAxis->setTickLabelRotation(60);//设置刻度标签旋转 ui->qCustomPlotMusic->xAxis->setSubTicks(false);//设置是否显示子刻度线 ui->qCustomPlotMusic->xAxis->setTickLength(0, 4);//设置标记的长度 ui->qCustomPlotMusic->xAxis->setRange(0, 9);//设置范围 ui->qCustomPlotMusic->xAxis->setBasePen(QPen(Qt::white));//设置轴基线颜色 ui->qCustomPlotMusic->xAxis->setTickPen(QPen(Qt::white));//设置刻度颜色 ui->qCustomPlotMusic->xAxis->grid()->setVisible(true);//网格可视 ui->qCustomPlotMusic->xAxis->grid()->setPen(QPen(QColor(130, 130, 130), 0, Qt::DotLine));//网格虚线 ui->qCustomPlotMusic->xAxis->setTickLabelColor(Qt::white);//设置刻度标签颜色 ui->qCustomPlotMusic->xAxis->setLabelColor(Qt::white);//设置轴标签的颜色 // 绘制yAxis: ui->qCustomPlotMusic->yAxis->setRange(0, 1000000);//设置轴范围的下限和上限 ui->qCustomPlotMusic->yAxis->setPadding(5); // 设置轴的填充a bit more space to the left border:在左边边界多留一点空间 ui->qCustomPlotMusic->yAxis->setLabel("播放次数(次)"); ui->qCustomPlotMusic->yAxis->setBasePen(QPen(Qt::white));//设置轴基线颜色 ui->qCustomPlotMusic->yAxis->setTickPen(QPen(Qt::white));//设置刻度线颜色 ui->qCustomPlotMusic->yAxis->setSubTickPen(QPen(Qt::white));//设置子刻度线颜色 ui->qCustomPlotMusic->yAxis->grid()->setSubGridVisible(true);//设置子网格可视 ui->qCustomPlotMusic->yAxis->setTickLabelColor(Qt::white);//设置刻度标签颜色 ui->qCustomPlotMusic->yAxis->setLabelColor(Qt::white);//设置轴标签的颜色 ui->qCustomPlotMusic->yAxis->grid()->setPen(QPen(QColor(130, 130, 130), 0, Qt::SolidLine));//设置网格颜色和线型,网格实线 ui->qCustomPlotMusic->yAxis->grid()->setSubGridPen(QPen(QColor(130, 130, 130), 0, Qt::DotLine));//设置子网格颜色和线型,网格虚线 // 绘制yAxis2: ui->qCustomPlotMusic->yAxis2->setRange(0, 10000);//设置轴范围的下限和上限 ui->qCustomPlotMusic->yAxis2->setPadding(5); // 设置轴的填充a bit more space to the left border:在左边边界多留一点空间 ui->qCustomPlotMusic->yAxis2->setLabel("评论次数(次)"); ui->qCustomPlotMusic->yAxis2->setBasePen(QPen(Qt::white));//设置轴基线颜色 ui->qCustomPlotMusic->yAxis2->setTickPen(QPen(Qt::white));//设置刻度线颜色 ui->qCustomPlotMusic->yAxis2->setSubTickPen(QPen(Qt::white));//设置子刻度线颜色 ui->qCustomPlotMusic->yAxis2->grid()->setSubGridVisible(true);//设置子网格可视 ui->qCustomPlotMusic->yAxis2->setTickLabelColor(Qt::white);//设置刻度标签颜色 ui->qCustomPlotMusic->yAxis2->setLabelColor(Qt::white);//设置轴标签的颜色 ui->qCustomPlotMusic->yAxis2->grid()->setPen(QPen(QColor(130, 130, 130), 0, Qt::SolidLine));//设置网格颜色和线型,网格实线 ui->qCustomPlotMusic->yAxis2->grid()->setSubGridPen(QPen(QColor(130, 130, 130), 0, Qt::DotLine));//设置子网格颜色和线型,网格虚线 ui->qCustomPlotMusic->yAxis2->setVisible(true);//默认为不可视,需要设置为可视 // Add data添加数据: QVector<double> LoveTimesData, LoveTimeData; LoveTimesData << 1553 << 2454<< 7676 << 2434 << 5641 << 9655 << 3556<<6899; LoveTimeData << 121334 << 65657 << 534343 << 65778 << 134356 << 978788 << 44345<<9545; LoveTimes->setData(ticks, LoveTimesData);//将容器内数据添加到对应刻度的点上,数量应相同 LoveTime->setData(ticks, LoveTimeData); // setup legend设置说明图例: ui->qCustomPlotMusic->legend->setVisible(true);//说明图例可视 ui->qCustomPlotMusic->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignLeft);//AlignTop:顶端对齐,AlignHCenter:中心对齐 ui->qCustomPlotMusic->legend->setBrush(QColor(255, 255, 255, 100)); ui->qCustomPlotMusic->legend->setBorderPen(Qt::NoPen);//设置边框颜色 QFont legendFont = font();//获取字体 legendFont.setPointSize(10);//设置字体大小,必须大于0 //legendFont.setStyleName(Qt::微软雅黑); ui->qCustomPlotMusic->legend->setFont(legendFont);//设置默认字体 //ui->qCustomPlotMusic->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);//客户交互,界面可以移动 //软件选项卡 ui->radioButton_6->setChecked(true);//选中网易公开课 ui->checkBox->setChecked(true);//选中网易公开课 //ui->treeWidgetDigital->clear(); ui->treeWidgetDigital->setColumnCount(1); //设置列数 ui->treeWidgetDigital->setHeaderLabels(QStringList(tr("数码产品")));//设置头的标题 ui->treeWidgetDigital->setHeaderHidden(false); QTreeWidgetItem *items1 = new QTreeWidgetItem(ui->treeWidgetDigital, QStringList(QString("手机"))); items1->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\1.ico")); QTreeWidgetItem *items11 = new QTreeWidgetItem(items1, QStringList(QString("苹果"))); items11->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\2.ico")); QTreeWidgetItem *items12 = new QTreeWidgetItem(items1, QStringList(QString("华为"))); items12->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\3.ico")); QTreeWidgetItem *items13 = new QTreeWidgetItem(items1, QStringList(QString("小米"))); items13->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\4.ico")); QTreeWidgetItem *items2 = new QTreeWidgetItem(ui->treeWidgetDigital, QStringList(QString("笔记本电脑"))); items2->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\5.ico")); QTreeWidgetItem *items21 = new QTreeWidgetItem(items2, QStringList(QString("Dell"))); items21->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\6.ico")); QTreeWidgetItem *items22 = new QTreeWidgetItem(items2, QStringList(QString("华硕"))); items22->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\7.ico")); QTreeWidgetItem *items3 = new QTreeWidgetItem(ui->treeWidgetDigital, QStringList(QString("平板电脑"))); items3->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\8.ico")); QList<QTreeWidgetItem *> rootList; QTreeWidgetItem *items4 = new QTreeWidgetItem; //添加第一个父节点 items4->setText(0,tr("数码相机")); items4->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\9.ico")); rootList.append(items4); QTreeWidgetItem *items41= new QTreeWidgetItem(items4,QStringList(QString("索尼"))); //添加子节点 items41->setIcon(0,QIcon("E:\\Qt_Project\\QTabWidget\\10.ico")); items4->addChild(items41); ui->treeWidgetDigital->insertTopLevelItems(0,rootList); //将结点插入部件中 ui->treeWidgetDigital->expandAll(); //结点全部展开 //ui->items1->setText(0, "手机"); //ui->treeWidgetDigital->addTopLevelItem(new QTreeWidgetItem((QTreeWidget*)0)); //ui->treeWidgetDigital->addTopLevelItem(tr("笔记本电脑")); //语言选项卡 ui->listWidgetLanguage->addItem(tr("中文")); ui->listWidgetLanguage->addItem(tr("英语")); ui->listWidgetLanguage->addItem(tr("法语")); ui->listWidgetLanguage->addItem(tr("德语")); ui->listWidgetLanguage->addItem(tr("日语")); ui->listWidgetLanguage->addItem(tr("韩语")); ui->listWidgetLanguage->addItem(tr("俄语")); } MainWindow::~MainWindow() { delete ui; }
显示效果
完整代码
简单示例百度网盘链接:https://pan.baidu.com/s/1oIeuz7A3q_eZQ7XY1CjzcA
提取码:ir81综合示例百度网盘链接:https://pan.baidu.com/s/1rhM_9ij0cXGLdQ_kh3yPmw
提取码:ppbe -
C#WinForm开发在选项卡中集成加载多个窗体,通过选项卡切换窗体(超详细讲解)
2019-08-28 16:13:57我用的编译器是VS2017,大家按照步骤一步一步来,应该是可以实现选项卡切换窗体的。 1.新建C#窗体应用,我建的项目名称是TabControlDemo,建议新手也用这个名称,否则后面赋值代码的时候可能会出错 2.新建三个...我用的编译器是VS2017,大家按照步骤一步一步来,应该是可以实现选项卡切换窗体的。
1.新建C#窗体应用,我建的项目名称是TabControlDemo,建议新手也用这个名称,否则后面赋值代码的时候可能会出错2.新建三个窗体,为了省事,直接用默认名称,Form2,Form3,Form4.
3.为了便于观察效果,在刚才新建的三个窗体上添加label标签,并标明窗体的名称
4.选取Form1作为主窗体,在Form1中添加控件TabControl,并调整大小和位置。
点击刚添加上的TabControl控件,右上角会出现一个三角,点击此三角,添加选项卡5.修改三个tabPage的text属性
修改三个TabPage的tag属性,TabPage1的tag属性修改为TabControlDemo.Form2,其余两个TabPage依次类推。
6.给tabControl1添加事件SelectedIndexChanged,双击右侧空白处即可添加。
双击Form1窗体,生成Form1的构造函数private void Form1_Load(object sender, EventArgs e) { }
7.在刚才生成的tabControl1_SelectedIndexChanged函数中添加如下代码
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (s[tabControl1.SelectedIndex] == 0) { btnX_Click(sender, e); } }
在Form1_Load中添加如下代码
private void Form1_Load(object sender, EventArgs e) { string formClass = "TabControlDemo.Form2"; GenerateForm(formClass, tabControl1); }
最后,给出整个Form1窗体的代码
using System; using System.Reflection; using System.Windows.Forms; namespace TabControlDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public int[] s = { 0, 0, 0 };//用来记录窗体是否打开过 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (s[tabControl1.SelectedIndex] == 0) { btnX_Click(sender, e); } } private void Form1_Load(object sender, EventArgs e) { string formClass = "TabControlDemo.Form2"; GenerateForm(formClass, tabControl1); } public void GenerateForm(string form, object sender) { //反射生成窗体 Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(form); //设置窗体没有边框,加入到选项卡中 fm.FormBorderStyle = FormBorderStyle.None; fm.TopLevel = false; fm.Parent = ((TabControl)sender).SelectedTab; fm.ControlBox = false; fm.Dock = DockStyle.Fill; fm.Show(); s[((TabControl)sender).SelectedIndex] = 1; } private void btnX_Click(object sender, EventArgs e) { string formClass = ((TabControl)sender).SelectedTab.Tag.ToString(); GenerateForm(formClass, sender); } } }
运行效果:
刚启动程序时
点击form3
点击form4
注意事项:
1.不要忘了添加using引用
2.如果引发下面这种异常,请检查每个tabPage的tag属性是否正确
3.如果对你有帮助,可以给我捐点下载积分,如果按照本文没有实现功能,也可以来捐点积分
https://download.csdn.net/download/weixin_43074474/11632460 -
什么是新建文件夹的快捷键?新建文件夹的快捷键有哪些?
2021-07-31 06:10:38对于很多经常使用电脑的朋友来说,熟练的掌握和...在电脑操作过程中,文件夹的创建是最基本的也是最经常用到的操作,那么,可不可以通过快捷键来完成新建文件夹的创建呢?下面小编就为朋友们简单介绍一下吧。什么是新... -
EasyUi 关闭一个tab选项卡后,跳到另一个选项卡,并刷新这个选项卡中的数据表格
2018-11-27 09:12:11这周做一个demo,需求是 A选项卡内容为一个datagrid数据表格,选中表格中的某条记录,进行修改,点击修改按钮后,会生成另一个B选项卡作为修改之用。 修改完毕后点击保存,会关闭B选项卡,并跳到A选项卡中,并且... -
C#WinForm开发在选项卡tab中集成加载多个窗体,通过选项卡切换窗体(超详细讲解)
2020-11-06 15:07:41我用的编译器是VS2017,大家按照步骤一步一步来,应该是可以实现选项卡切换窗体的。 1.新建C#窗体应用,我建的项目名称是TabControlDemo,建议新手也用这个名称,否则后面赋值代码的时候可能会出错 2.新建三个... -
VS2015新建一个项目无法找到Qt Project Settings选项卡的问题
2020-03-10 20:46:38在VS2013的工程中,有两个地方可以找到QT Project Setting ... 2,通过 QT VS ToolS ...在VS2015中新建一个项目,无法找到QT Project Setting,也就无法设置使用的编译器以及激活使用的QT模块。 问题的原因... -
mui选项卡
2018-09-28 18:56:27【HTML文件】,然后在弹出窗口下面的“选择模板组:”中选中“mui底部选项卡(Webview模式)”。点击完成,就会自动创建一个带有默认页面的模板。 打开tab-webview-main.html可以在右侧看到已经创建了一个有底部... -
VBA-将宏添加到选项卡(简易版)
2019-09-27 17:29:15简单介绍一下在Office中将宏添加到选项卡的简易方法(UI介面操作法和VBA法)。 -
qt QTabWidget双击选项卡修改选项卡名字
2019-08-16 18:26:50思路:双击发出信号,显示创建好的QLineEdit输入名字,输入完成发出信号,获取QLineEdit的字符给选项卡改名字。由于不想重写QTabWidget,所以主要问题是如何确定QLineEdit的位置。 mainwindow.cpp #include ... -
【MATLAB】界面介绍 ( 标题栏 | 选项卡 | 命令窗口 | 编辑器 | 变量命名规则 )
2021-04-15 09:04:02编辑器 : 编辑器启动时 , 默认不显示 , 在 " 主页 " 选项卡中 , 选择 " 新建 " , 选择 " 脚本 " , 弹出的界面就是编辑器界面 ; " 脚本 " 是最简单的源码文件 ; 编辑器面板 : 保存文件 : 新创建的 " 脚本 " 文件 , ... -
LabVIEW学习笔记(七)——选项卡的使用
2018-08-23 16:33:42前言: 今天我们学习页面切换到... 选项卡在控件面板中的位置如下: 比如我们现在有几个页面: 那么这两个界面在程序运行的时候,如何实现自动切换呢?我们用事件结构来处理: 用户名和密码输入错误... -
简单实现mui-底部选项卡
2018-09-13 21:31:03关于底部选项卡的问题我查看了很多种方法,试了无数次,终于找到适合自己的一种方法。 我在看官方的mui文档的时候发现并没有找到选项卡的位置,所以我并没有采纳可能是我太笨了吧接触的还少,先说说我原先是如何写... -
如何关闭AutoCAD2016上的“开始”界面、打开CAD就自动新建一个drawing1、“文件”选项卡?
2021-04-06 09:33:54新装的AutoCAD2016简体中文版,打开软件的时候,会附带个“开始”界面和“文件”选项卡,和以前版本的CAD,有点不太一样,用惯了以前的界面,新界面有点不太适应,那是不是可以关闭新版的AutoCAD2016上的“开始”... -
【Android】实现底部选项卡切换页面效果
2022-02-02 11:14:43实现底部选项卡转换页面效果 环境 Android Studio:2020.3.1 这里注意:最新版的2021.1.1在布局编辑器对于material design的某些组件可以会造成无法显示的情况 Android Gradle Plugin Version:7.0.4 Gradle Version... -
Excel:Ribbon CustomUI为VBA宏创建自定义功能区选项卡
2019-02-04 00:20:02(1)MyTab选项卡->Opposite按键:将选中单元格的数值变为相反数 (2)MyTab选项卡->Round(Percentile)按键:将选中单元格的数值四舍五入保留两位小数,数值采用千分位表示,如123,456.78 (3)... -
MFC之Tab Control 选项卡控件、实例、最快入门、使用方法
2018-02-01 14:29:061.新建一个对话框工程。命名为:TabControlTest,选择“基于对话框”,点击完成。 2. 在对话框上添加Tab控件,然后,在控件上右键添加变量,变量名为m_tab。 3. 在对话框的初始化函数OnInitDialog里面添加如下代码: ... -
VC6.0重装后新建选项卡中没有关于MFC工程的选项的解决方案
2014-05-17 00:38:30今天安装vc6.0装了后发现不能新建mfc工程,及不能新建.h,.cpp文件,起初不知道是怎么回事,以为是安装包有问题,在别人的机子上试了试,结构安装正确。后来想起以前安装过vc6.0 的,所以想到可能是没有卸载干净的... -
Unity3D 自定义选项卡组件
2016-08-29 11:12:34选项卡组件在平时的开发过程中还是会经常使用到的,往往是需要把一组相同或者相似的数据放到一个面板去显示,这样可以节省面板的数量,但是往往会让这个面板显示臃肿,NGUI 貌似没有提供选项卡组件,但是有个例子... -
Layui tab选项卡切换多页面
2021-04-26 16:50:38tab选项卡结构:https://www.layui.com/doc/element/tab.html tab页面绑定与切换:https://www.layui.com/doc/modules/element.html 1.新建导航选项 <div class="layui-side layui-bg-black"> <div class... -
C#中 选项卡(Tabcontrol)动态添加TabPage
2020-05-05 09:59:42https://www.cnblogs.com/zhangyonglvdaomei/p/3837846.html https://stackoverflow.com/questions/33069634/dynamically-add-tabs-to-tabcontrol-container ... -
HBuilder mui入门教程——(2)含tab选项卡的首页
2017-07-02 17:16:30极速创建【文件】->【新建】->【HTML文件】,然后在弹出窗口下面的“选择模板组:”中选中“mui底部选项卡(Webview模式)”。点击完成,就会自动创建一个带有默认页面的模板。 打开tab-webview-main.html可以在... -
如何关闭AutoCAD2016上的“开始”界面、打开CAD就自动新建一个drawing1、“文件”选项卡?...
2018-02-01 17:26:00新装的AutoCAD2016简体中文版,打开软件的时候,会附带个“开始”界面和“文件”选项卡,和以前版本的CAD,有点不太一样,用惯了以前的界面,新界面有点不太适应,那是不是可以关闭新版的AutoCAD2016上的“开始”... -
选项卡控件TabControl
2014-04-24 16:07:01判断选中的选项卡(TabPage) (1)用TabControl 的SelectedTab属性 if(tabControl1.SelectedTab == tabPage2) (2)用TabControl 的SelectedIndex 属性 if(tabControl1.SelectedTab == 1) 设置当前选项卡... -
word2016安装Aurora,并添加到选项卡
2019-12-11 21:22:26一. aurora+micro-miktex+keygen安装包 ...接下来点击自定义功能区->新建选项卡(命名Aurora)->新建组(命名LaTex), 最后将录制的宏添加到Aurora->LaTex下即可。 最后结果如下 -
(VS2013)MFC对话框中用多个按钮创建多个子对话框实现选项卡效果
2015-05-01 10:37:33首先创建一个MFC的对话框工程,并拉几个按钮(本文中假设3个,Button1,Button2,Button3)放在对话框上,注意留出一定的空间给子对话框。...进入每个类的对话框资源中,将Border属性设为none,将Style属 -
Android底部选项卡简单布局
2016-07-05 10:45:46之前做项目的时候经常会遇到选项卡配合fragment来切换界面,今天给大家分享个简单的选项卡的布局 上代码: 首先是xml布局 也是很简单 不需要写注释, tabshow1.xml ... -
Win10系统新建菜单只有文件夹选项的处理方法
2018-07-11 18:44:57我们在使用电脑时经常会右键新建一些文件夹、文档或者表格之类的东西,但有时会遇到右键新建菜单内只有文件夹选项的情况,而且新建文件夹还提示没有权限。这是怎么回事呢?下面就为大家介绍一下Win10系统右键新建...