精华内容
下载资源
问答
  • 2019-08-14 10:02:41
    1. Alt + Shift + N:在当前XShell新建选项卡。
    2. Ctrl + Shift + F4:关闭当前选项卡。
    更多相关内容
  • add(title,url){ //title 选项卡的名字 //url 选项卡的链接地址  var parent$ = self.parent.$; //找到父级DOM  if (parent$('#tabs').tabs('exists', title)){   parent$('#tabs').tabs('select', ...
    第一种以href链接的方式:
    [javascript]  view plain  copy
    1. function addTab(title, url){  
    2.             if ($('#tt').tabs('exists', title)){  
    3.                 $('#tt').tabs('select', title);  
    4.             } else {  
    5.                 $('#tt').tabs('add',{  
    6.                     title:title,  
    7.                     href:url,     //tab中显示的内容  
    8.                     closable:true  
    9.                 });  
    10.             }  
    11.         } 
    第二种以iframe的方式:
    1. function addTab(title, url){  
    2.             if ($('#tt').tabs('exists', title)){  
    3.                 $('#tt').tabs('select', title);  
    4.             } else {  
    5.                 var content = '<iframe scrolling="auto" frameborder="0"  src="'+url+'" style="width:100%;height:100%;"></iframe>';  
    6.                 $('#tt').tabs('add',{  
    7.                     title:title,  
    8.                     content:content,   //tab中显示的内容  
    9.                     closable:true  
    10.                 });  
    11.             }  
    12.         }  

    想要实现点击tab内容中的链接,在父级中tab上新增一个tab的话,须以iframe方式来添加父级tab。

    在tab内容中,即url页面中,需要在链接上实现下面这个方法:

    [javascript]  view plain  copy
    1. function add(title,url){   //title 选项卡的名字 //url 选项卡的链接地址
          var parent$ = self.parent.$;      //找到父级DOM  
          if (parent$('#tabs').tabs('exists', title)){  
          parent$('#tabs').tabs('select', title);  
          } else {  
              var content = '<iframe scrolling="auto" frameborder="0"  src="'+url+'" style="width:100%;height:100%;"></iframe>';  
              parent$('#tabs').tabs('add',{  
                  title:title,  
                  content:content,   //tab中显示的内容  
                  closable:true  
              });  
          }  
      }
    展开全文
  • Qt5:TabWidget选项卡

    万次阅读 多人点赞 2018-11-12 10:31:02
    Qt的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 

     

    展开全文
  • 我用的编译器是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

    展开全文
  • 对于很多经常使用电脑的朋友来说,熟练的掌握和...在电脑操作过程中,文件夹的创建是最基本的也是最经常用到的操作,那么,可不可以通过快捷键来完成新建文件夹的创建呢?下面小编就朋友们简单介绍一下吧。什么是新...
  • 这周做一个demo,需求是 A选项卡内容一个datagrid数据表格,选中表格中的某条记录,进行修改,点击修改按钮后,生成另一个B选项卡作为修改之用。 修改完毕后点击保存,关闭B选项卡,并跳到A选项卡中,并且...
  • 我用的编译器是VS2017,大家按照步骤一步一步来,应该是可以实现选项卡切换窗体的。 1.新建C#窗体应用,我建的项目名称是TabControlDemo,建议新手也用这个名称,否则后面赋值代码的时候可能出错 2.新建三个...
  • 在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法)。
  • 思路:双击发出信号,显示创建好的QLineEdit输入名字,输入完成发出信号,获取QLineEdit的字符给选项卡改名字。由于不想重写QTabWidget,所以主要问题是如何确定QLineEdit的位置。 mainwindow.cpp #include ...
  • 编辑器 : 编辑器启动时 , 默认不显示 , 在 " 主页 " 选项卡中 , 选择 " 新建 " , 选择 " 脚本 " , 弹出的界面就是编辑器界面 ; " 脚本 " 是最简单的源码文件 ; 编辑器面板 : 保存文件 : 新创建的 " 脚本 " 文件 , ...
  • LabVIEW学习笔记(七)——选项卡的使用

    万次阅读 多人点赞 2018-08-23 16:33:42
    前言:  今天我们学习页面切换到... 选项卡在控件面板中的位置如下: 比如我们现在有几个页面: 那么这两个界面在程序运行的时候,如何实现自动切换呢?我们用事件结构来处理: 用户名和密码输入错误...
  • 简单实现mui-底部选项卡

    千次阅读 2018-09-13 21:31:03
    关于底部选项卡的问题我查看了很多种方法,试了无数次,终于找到适合自己的一种方法。 我在看官方的mui文档的时候发现并没有找到选项卡的位置,所以我并没有采纳可能是我太笨了吧接触的还少,先说说我原先是如何写...
  • 新装的AutoCAD2016简体中文版,打开软件的时候,附带个“开始”界面和“文件”选项卡,和以前版本的CAD,有点不太一样,用惯了以前的界面,新界面有点不太适应,那是不是可以关闭新版的AutoCAD2016上的“开始”...
  • 实现底部选项卡转换页面效果 环境 Android Studio:2020.3.1 这里注意:最新版的2021.1.1在布局编辑器对于material design的某些组件可以造成无法显示的情况 Android Gradle Plugin Version:7.0.4 Gradle Version...
  • (1)MyTab选项卡-&gt;Opposite按键:将选中单元格的数值变为相反数 (2)MyTab选项卡-&gt;Round(Percentile)按键:将选中单元格的数值四舍五入保留两位小数,数值采用千分位表示,如123,456.78 (3)...
  • 1.新建一个对话框工程。命名:TabControlTest,选择“基于对话框”,点击完成。 2. 在对话框上添加Tab控件,然后,在控件上右键添加变量,变量名m_tab。 3. 在对话框的初始化函数OnInitDialog里面添加如下代码: ...
  • 今天安装vc6.0装了后发现不能新建mfc工程,及不能新建.h,.cpp文件,起初不知道是怎么回事,以为是安装包有问题,在别人的机子上试了试,结构安装正确。后来想起以前安装过vc6.0 的,所以想到可能是没有卸载干净的...
  • Unity3D 自定义选项卡组件

    千次阅读 2016-08-29 11:12:34
    选项卡组件在平时的开发过程中还是经常使用到的,往往是需要把一组相同或者相似的数据放到一个面板去显示,这样可以节省面板的数量,但是往往让这个面板显示臃肿,NGUI 貌似没有提供选项卡组件,但是有个例子...
  • Layui tab选项卡切换多页面

    千次阅读 2021-04-26 16:50:38
    tab选项卡结构: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...
  • https://www.cnblogs.com/zhangyonglvdaomei/p/3837846.html https://stackoverflow.com/questions/33069634/dynamically-add-tabs-to-tabcontrol-container ...
  • 极速创建【文件】->【新建】->【HTML文件】,然后在弹出窗口下面的“选择模板组:”中选中“mui底部选项卡(Webview模式)”。点击完成,就自动创建一个带有默认页面的模板。 打开tab-webview-main.html可以在...
  • 新装的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下即可。 最后结果如下
  • 首先创建一个MFC的对话框工程,并拉几个按钮(本文中假设3个,Button1,Button2,Button3)放在对话框上,注意留出一定的空间给子对话框。...进入每个类的对话框资源中,将Border属性设none,将Style属
  • Android底部选项卡简单布局

    千次阅读 热门讨论 2016-07-05 10:45:46
    之前做项目的时候经常遇到选项卡配合fragment来切换界面,今天给大家分享个简单的选项卡的布局 上代码: 首先是xml布局 也是很简单 不需要写注释, tabshow1.xml ...
  • 我们在使用电脑时经常右键新建一些文件夹、文档或者表格之类的东西,但有时遇到右键新建菜单内只有文件夹选项的情况,而且新建文件夹还提示没有权限。这是怎么回事呢?下面就大家介绍一下Win10系统右键新建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,981
精华内容 47,992
关键字:

为什么会出现新建选项卡