Qt Table 的表头合并

2023-11-15

最近接到了开发表格的需求,一般来说网上有很多不错的例子。表格的开发多半使用QtableWeiget或者Qtableview。为了美观,有很多样式设置的代码行。


基本外观设置

FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框

FriendTable->setHorizontalHeaderLabels(HeadList);  设置表头

FriendTable->setSelectionMode(QAbstractItemView::SingleSelection);   设置选择的模式为单选择

FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows);    设置选择行为时每次选择一行

FriendTable->setShowGrid(false);   设置不显示格子线

FriendTable->setFont(font);   设置字体

 ,用void hideColumn ( int column )这个就可以隐藏某一列
用这个void showColumn ( int column )显示某一列

设置表单背景或透明

QPalette pal = musicTable->palette();
    pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png")) );
    musicTable->setPalette( pal );

设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色

 

QPalette pll = musicTable->palette();

pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0)));

musicTable->setPalette(pll);  //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的


在QTableWidget列表中添加图片的方法   
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap("1.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
 musicTable->setItem(1,1,cubesHeaderItem);   //在第一行第一列中显示图片

 

*******************表头的属性修改****************

musicTable->horizontalHeader()->resizeSection(0,150);  //修改表头第一列的宽度为150

 musicTable->horizontalHeader()->setFixedHeight(25);  //修改表头合适的高度

musicTable->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:lightblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c;}");    //设置表头字体,颜色,模式

 

 FriendTable->verticalHeader()->setStyleSheet("QHeaderView::section {  background-color:skyblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c}");   //设置纵列的边框项的字体颜色模式等

 

 

 

本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。
实现也好实现,QTableWidgetItem里面有修改背景色的API,直接调用,然后用循环控制隔行换色即可。
实现代码:
void testtt::changeColor(QTableWidget *tablewidget){
for (int i = 0;i < tablewidget->rowCount();i++)
{
      if (i % 2 == 0)
      {
            for (int j = 0;j < tablewidget->columnCount();j++)
           {
                 QTableWidgetItem *item = tablewidget->item(i,j);
                 if (item)
                {
                     const QColor color = QColor(252,222,156);
                      item->setBackgroundColor(color);
                 }
           }
     }
}

 

 

使用

向表中插入一项

  QTableWidgetItem *num=new QTableWidgetItem(QTableWidgetItem::Type);
            num->setCheckState(Qt::Unchecked);   //加入复选框
            num->setIcon(QIcon("images/fetion.png"));  //加入ICon
            num->setText(InfoList.at(i).name);
            num->setFont(font);
            num->setTextColor(color);
            num->setFlags(num->flags() ^ Qt::ItemIsEditable);

            int currentRow=FriendTable->rowCount();  //插入到最后
            FriendTable->insertRow(currentRow);
            FriendTable->setItem(currentRow,0,num);  //插入该Item
            FriendTable->selectRow(0);   选择第一行

删除某一行 列

FriendTable->removeRow(row);

FriendTable->removeColumn (column );

 

信号

void cellActivated ( int row, int column )
void cellChanged ( int row, int column )
void cellClicked ( int row, int column )
void cellDoubleClicked ( int row, int column )
void cellEntered ( int row, int column )
void cellPressed ( int row, int column )
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn )
void currentItemChanged ( QTableWidgetItem * current, QTableWidgetItem * previous )  改变Item了
void itemActivated ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )
void itemSelectionChanged ()

 

 

 

#include <QtGui/QApplication>
#include <QTableWidget>
#include <QTableWidgetItem>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTableWidget *tableWidget = new QTableWidget(10,5); // 构造了一个QTableWidget的对象,并且设置为10行,5列
    //    也可用下面的方法构造QTableWidget对象
    //    QTableWidget *tableWidget = new QTableWidget;
    //    tableWidget->setRowCount(10);     //设置行数为10
    //    tableWidget->setColumnCount(5);   //设置列数为5
    tableWidget->setWindowTitle("QTableWidget & Item");
    tableWidget->resize(350, 200);  //设置表格
    QStringList header;
    header<<"Month"<<"Description";
    tableWidget->setHorizontalHeaderLabels(header);
    tableWidget->setItem(0,0,new QTableWidgetItem("Jan"));
    tableWidget->setItem(1,0,new QTableWidgetItem("Feb"));
    tableWidget->setItem(2,0,new QTableWidgetItem("Mar"));

    tableWidget->setItem(0,1,new QTableWidgetItem(QIcon("images/IED.png"), "Jan's month"));
    tableWidget->setItem(1,1,new QTableWidgetItem(QIcon("images/IED.png"), "Feb's month"));
    tableWidget->setItem(2,1,new QTableWidgetItem(QIcon("images/IED.png"), "Mar's month"));
    tableWidget->show();

    return a.exec();
}

一. 对QTableWidget本身的效果实现

1. 将表格变为禁止编辑

在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

 tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

 

QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:

 

 

QAbstractItemView.NoEditTriggers

0

No editing possible. 不能对表格内容进行修改

QAbstractItemView.CurrentChanged

1

Editing start whenever current item changes.任何时候都能对单元格修改

QAbstractItemView.DoubleClicked

2

Editing starts when an item is double clicked.双击单元格

QAbstractItemView.SelectedClicked

4

Editing starts when clicking on an already selected item.单击已选中的内容

QAbstractItemView.EditKeyPressed

8

Editing starts when the platform edit key has been pressed over an item.

QAbstractItemView.AnyKeyPressed

16

Editing starts when any key is pressed over an item.按下任意键就能修改

QAbstractItemView.AllEditTriggers

31

Editing starts for all above actions.以上条件全包括

 

 

 

2. 设置表格为整行选择

tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  //整行选中的方式

QAbstractItemView.SelectionBehavior枚举还有如下类型

 

 

Constant

Value

Description

QAbstractItemView.SelectItems

0

Selecting single items.选中单个单元格

QAbstractItemView.SelectRows

1

Selecting only rows.选中一行

QAbstractItemView.SelectColumns

2

Selecting only columns.选中一列

 

 

 

3.单个选中和多个选中的设置:

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  //设置为可以选中多个目标

该函数的参数还可以是:

QAbstractItemView.NoSelection      不能选择

QAbstractItemView.SingleSelection  选中单个目标

QAbstractItemView.MultiSelection    选中多个目标

QAbstractItemView.ExtendedSelection   QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选

 

4. 表格表头的显示与隐藏

对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:

 tableWidget->verticalHeader()->setVisible(false);   //隐藏列表头
 tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头

注意:需要 #include <QHeaderView>

 

5. 对表头文字的字体、颜色进行设置

    QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
    columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
    columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
    columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色

注意:需要 #include <QHeaderView>

 

6. 在单元格里加入控件:

QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做:

    QComboBox *comBox = new QComboBox();
    comBox->addItem("Y");
    comBox->addItem("N");
    tableWidget->setCellWidget(0,2,comBox);

二. 对单元格的进行设置

1. 单元格设置字体颜色和背景颜色 及字体字符

    QTableWidgetItem *item = new QTableWidgetItem("Apple");
    item->setBackgroundColor(QColor(0,60,10));
    item->setTextColor(QColor(200,111,100));
    item->setFont(QFont("Helvetica"));
    tableWidget->setItem(0,3,item);

另:如果需要对所有的单元格都使用这种字体,则可以使用  tableWidget->setFont(QFont("Helvetica"));

2. 设置单元格内文字的对齐方式

这个比较简单,使用newItem.setTextAlignment()函数即可,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左。

水平对齐方式有:

 

 

Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.

 

 

垂直对齐方式:

 

 

Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.

 

 

如果两种都要设置,只要用 Qt.AlignHCenter |  Qt.AlignVCenter 的方式即可

 

3. 合并单元格效果的实现:

tableWidget->setSpan(0, 0, 3, 1)  # 其参数为: 要改变单元格的   1行数  2列数     要合并的  3行数  4列数

 

4. 设置单元格的大小

首先,可以指定某个行或者列的大小

    tableWidget->setColumnWidth(3,200);
    tableWidget->setRowHeight(3,60);

还可以将行和列的大小设为与内容相匹配

    tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();

5. 获得单击单元格的内容

通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息

connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));

//将itemClicked信号与函数getItem绑定


6.QTableWidget要调整表格行宽主要涉及以下一个函数

resizeColumnsToContents();                      根据内容调整列宽          
resizeColumnToContents(int col);               根据内容自动调整给定列宽
horizontalHeader()->setResizeMode
           把给定列设置为给定模式
主要模式有Stretch和Fixed

7.

int row = rowCount();
 removeRow(row);//清除已有的行列
 setShowGrid(true);//显示表格线
 verticalHeader()->setVisible(false);//隐藏左边垂直
 QHeaderView *headerView = horizontalHeader();
 headerView->setMovable(false);//去除表头的移动
 headerView->resizeSection(0,284);//设置第一列宽
 headerView->resizeSection(1,127);//设置第二列宽
 headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动
 headerView->setClickable(false);//不响应鼠标单击
 setEditTriggers(QTableWidget::NoEditTriggers);//不能编辑
 setSelectionBehavior(QTableWidget::SelectRows);//一次选中一行
 setSelectionMode(QAbstractItemView::SingleSelection);//只能单选
 /*QScrollBar *scrollBar = horizontalScrollBar();
 scrollBar->hide();*/
 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
 setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动
 setAutoScroll(false);//去掉自动滚动

http://mrjake.blog.163.com/blog/static/10510910620129297544967


甚至可以合并单元格table->setSpan()调用该参数。


如果是实现表头单元格的合并该怎么实现?




找了很多都没有具体的解决实例,模糊说了两种,第一种是重写表头函数。自己实现headData比较复杂,我就用了最初级的方法解决,就是创建一个最根本的Qtablewidget


然后再嵌套子表格,子表格类型是Qtablewidget或者Qtableview都可以  但是根级表一定要是Qtablewidget。



QTableWidget *rootWidget = new QTableWidget(this);
rootWidget->setColumnCount(3);
rootWidget->setRowCount(1);
rootWidget->horizontalHeader()->setStretchLastSection(true);
rootWidget->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("过球")
<< QString::fromLocal8Bit("主管泄漏") << QString::fromLocal8Bit("全车泄漏"));

QTableWidget *widget1 = new QTableWidget;
widget1->setColumnCount(2);
widget1->setRowCount(1);
widget1->horizontalHeader()->setStretchLastSection(true);
widget1->verticalHeader()->setVisible(false);
widget1->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("球编号"));
QTableWidget *widget2 = new QTableWidget;
widget2->setColumnCount(2);
widget2->setRowCount(1);
widget2->horizontalHeader()->setStretchLastSection(true);
widget2->verticalHeader()->setVisible(false);
widget2->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("漏泄量"));
QTableWidget *widget3 = new QTableWidget;
widget3->setColumnCount(2);
widget3->setRowCount(1);
widget3->horizontalHeader()->setStretchLastSection(true);
widget3->verticalHeader()->setVisible(false);
widget3->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("漏泄量"));

rootWidget->setCellWidget(0,0,widget1);
rootWidget->setCellWidget(0,1,widget2);
rootWidget->setCellWidget(0,2,widget3); 

我当时的效果差不多是这样


嵌套了但是根本显示不出来。。。根表格只有一行的宽度留给了子表格

    rootWidget->setColumnWidth(0,200);
    rootWidget->setRowHeight(0,70);
    rootWidget->setColumnWidth(1,200);
    rootWidget->setRowHeight(1,70);
    rootWidget->setColumnWidth(2,200);
    rootWidget->setRowHeight(2,70);


调用代码强行修改每个单元格的宽高




因为数据显示不完整  所以我又改了下


    rootWidget->setColumnCount(1);
    rootWidget->setRowCount(3);

    rootWidget->setVerticalHeaderLabels(QStringList() << QString::fromLocal8Bit("温度")
    << QString::fromLocal8Bit("电压检测值(V)") << QString::fromLocal8Bit("电流检测值(A)"));

    rootWidget->setCellWidget(0,0,m_view);
    rootWidget->setCellWidget(1,0,m_view1);
    rootWidget->setCellWidget(2,0,m_view2);



改一下这些就好了。


其实后来发现,用一张表通过单元格合并就可以实现类似的效果,看起来向表头的地方实际上也是单元格。只要把特定的单元格写死就能当作表头用了



总结。。虽然走歪了  但是对于布局概念理解更深了,就算实现以上的效果嵌套好像也做不了  就是合并单元格并且把内容写死。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Table 的表头合并 的相关文章

  • QMetaObject::invokeMethod 在以下情况下不起作用:

    从静态类和非主线程调用 简而言之 我有一个类 sapp 它有另一个静态类 tobj 作为静态成员 为了避免静态顺序初始化失败 tobj 在 sapp 的方法中声明 该方法又返回 tobj 实例的指针 我的问题是 tobj 有一个计时器 应该
  • 在QT中以不同的时间间隔更新GUI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何在QT中以不同的时间间隔更新GUI 最好的是我可以控制时间间隔 我知道 QTimer 可以在同一时间间隔更新 GUI 但我
  • Qt5 CMake 将所有库包含到可执行文件中

    我正在尝试使用 Qt 5 14 构建一个发布模式下的应用程序 并且 Qt Creator 内部一切正常 但是当我尝试单独运行可执行文件时 我收到如下错误 OS Windows 10 Qt 5 14 Cmake 3 5 我尝试过的 设置 CM
  • 如何在Qt WebKit中将网页保存为“另存为完整网页”

    我需要使用 Qt WebKit 保存网页 类似于 另存为完整网页 以下是我的要求 保存索引html文件 维护实体编码 需要下载所有链接的图像和其他资源 需要将html页面中的资源路径更改为本地下载路径 需要维护网页当前状态 我可以使用 Qt
  • Qt 的最佳实践包括和预编译头文件?

    当使用现代和最新的 C 编译器 例如 MSVC2015 并激活预编译头时 当前关于包含 Qt 头文件的 最佳实践 是什么 Example include
  • QObject:无法为位于不同线程中的父级创建子级

    我在 Windows 7 Ultimate 下使用 Qt 4 6 0 32 位 考虑以下QThread 界面 class ResultThread public QThread Q OBJECT QString post data QNet
  • Qt 对象的生命周期

    Qt 对象的生命周期是多少 Such as QTcpSocket socket new QTcpSocket 套接字什么时候会被销毁 我应该使用 delete socket 有什么区别吗 QTcpSocket socket 我找不到有关此的
  • 如何在点击 Qtablewidget 单元格时获取放置在该单元格中的小部件的行号?

    我正在尝试的是当用户选择项目时获取 QcomboBox 的行号 虽然使用它很容易获得单元格的列和行 cellClicked int int 信号 但仅当单元格上没有小部件时才有效 那么如果单元格中放置了小部件 如何获取行号 Note 所有组
  • 如何管理返回到 QML 的动态分配的 QObject 的生命周期?

    我有这个代码 QVariant componentFromCode QString code QQmlComponent component new QQmlComponent engine engine gt setObjectOwner
  • 在 QtCreator 中查看数组内容

    调试时是否可以在 Qt Creator 中查看数组的内容 似乎检测到我的数组是一个数组而不是一个指针 此外 我可以点击一个箭头 就像展开一样 但之后什么也没有显示 当我试穿的时候std vector Qt Creator 设法按预期显示内容
  • 如何使用 Qt Test 控制 QFileDialog?

    我有两个问题 我怎样才能访问QFileDialog并使用 Qt Test 模块在 文件名 字段中写入文件的路径 我这么问是因为我正在 Qt 中开发一些 GUI 测试 现在我需要打开一个文本文件 以下代码创建QFileDialog并获取文件路
  • Qt 信号槽,新符号中的转换类型[重复]

    这个问题在这里已经有答案了 鉴于以下两个 connect ui gt comboBox SIGNAL activated QString ps SLOT requestPlotsAvailable QString connect ui gt
  • Qt、PushButton、id 属性?有什么方法可以知道点击了哪个按钮

    void MainWindow addRadioToUI int button cunter 4 while database isEmpty button cunter QPushButton one new QPushButton Pl
  • 将项目添加到自定义组件的布局

    我有一个习惯Footer Component我想在 QML 应用程序的不同位置重用它 Rectangle color gold height 50 anchors bottom parent bottom left parent left
  • QT 应用程序运行时错误?

    我已经在 Windows 7 的 Qt5 1 上开发了一个应用程序 现在我想分发它 由于我使用了 MINGW 编译器 因此无法静态构建它 我使用dependency walker找出所有dll并打包 当我在未安装 QT 开发环境的计算机上运
  • cx_freeze:QODBC 驱动程序未加载

    我的 python 应用程序如下所示 test py from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4 import QtSql import sys import at
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • qt项目如何设置安装路径

    我正在寻找与 qmake configure prefix 等效的内容 基本上 我想覆盖默认的安装 部署目录 这是如何用命令行 qmake 指定的 我还使用 QtCreator 构建了很多 gui 项目 并且我想知道如何在 QtCreato
  • 从 QML 实例化 C++ 对象会产生巨大的内存使用开销

    实例化一个QObjectC 堆中的派生类为每个对象提供了大约 160 个字节 通过注册相同的对象qmlRegisterType 用于从 QML 创建并通过以下方式动态创建对象createObject 每个对象给我 2000 多个字节 这是完

随机推荐

  • lambda中sorted排序

    准备工作 新建一个User类 使用stream排序操作 默认ASC排序 stream倒序排序操作 sorted Comparator reverseOrder 代码例子 lambda sorted排序 Test public void te
  • Linux操作系统与Shell编程

    Linux是自由 开源的操作系统 安装在计算机的硬件之上 是用来操作计算机硬件和软件资源的系统软件 一般应用于专业的web服务器上 具有以下特性 Linux注重系统的安全性 对文件访问权限有严格设定 最高权限账户为root用户 可以操作一切
  • localStorage,sessionStorage和cookie的介绍及区别

    localStorage sessionStorage和cookie的介绍及区别 1 localStorage localStorage是HTML5规范中作为持久化保存客户端数据的方案 localStorage可以用于数据缓存 日志存储等应
  • 机器学习基础(五)

    决策树 决策树是一种预测模型 它代表着对象属属性与对象值之间的一种映射关系 树中的每个节点代表一个对象 分叉路径 或者叫树枝 则代表一个属性值 决策树常用方法 分类树分析 是一种监督学习 用于预计结果可能为离散类型 回归树分析 用于预计结果
  • 在Java中response如何设置文件路径

    在 Java 中 使用 java io File 类来设置文件路径 例如 下面的代码展示了如何创建一个 File 对象 并使用它来设置文件路径 import java io File 创建一个 File 对象 表示当前目录下的 test t
  • “warning NU1701: 项目依赖包与项目框架net6.0不完全兼容“

    问题 一个Net6的Web项目 有一个警告 warning NU1701 已使用 NETFramework Version v4 6 1 NETFramework Version v4 6 2 NETFramework Version v4
  • 服务器之间如何传输数据

    有时候大家需要将一台服务器内的数据传输到另外一台设备 有很多种方法 如果两台物理机离得很近 可以通过移动硬盘传输 如果是跨地区的 有人首先通过filezilla将数据下载到windows电脑上 在通过filezilla上传到另外一台服务器
  • 小红书怎么做关键词搜索排名?哪些行业适合在小红书推广?

    小红书 是口碑营销 社群营销 笔记营销 是大众点评的电商版本 靠分享打天下的 分享就是口碑 很多人问小红书怎么做关键词搜索排名 今天就小编带你领略一下小红书的关键词排名引流秘籍 一 搞关键词布局 1 文章标题中必须要带有关键词 醒目的标题
  • LeetCode-1343. Maximum Product of Splitted Binary Tree

    Given a binary tree root Split the binary tree into two subtrees by removing 1 edge such that the product of the sums of
  • 解决windows环境下cmake无法生成Makefiles文件

    Step1 首先确保你的电脑安装了make 如何安装了MinGW可以将bin目录下的mingw32 make exe或mingw64 make exeq强制改为make exe并添加环境变量也可以 Step2 执行代码 cmake G Un
  • HTTP API网关选择之一Kong介绍

    Kong是Mashape开源的高性能高可用API网关和API服务管理层 它基于OpenResty 进行API管理 并提供了插件实现API的AOP Kong在Mashape 管理了超过15 000 个API 为200 000开发者提供了每月数
  • 四. Gateway 限流

    目录 一 限流中的基础问题 1 为什么限流及常见限流方案 2 常见限流算法 计数器限流算法 令牌桶算法 漏桶算法 3 几种基础版限流实现方案 基于redis实现限流 基于 Guava RateLimiter 实现令牌算法 二 Gateway
  • 详解POW工作量证明原理

    原文地址 来自 微信公众号 区块链大师 POW工作量证明 英文全称为Proof of Work 早在比特币出现之前就已经有人探索 常见的是利用HASH运算的复杂度进行CPU运算实现工作量确定 当然你也可以利用卷积求导 大质数分解这些复杂的运
  • 14-7 使用 css 调控样式

    1 修改前端样式 可以将 ui 文件与 css 文件进行关联 类似于 html 和 css 的关系 只不过需要注意的是 前端样式可以借助 glade 进行修改 但并没有将修改应用至程序窗口 仅仅提供了预览功能 样式修改后还需要修改后台代码应
  • DeepLabv3+

    DeepLabv3 引言 语义分割中的DCNN主要有两种结构 空间金字塔池化SPP和编码器 解码器encoder decoder SPP通过多种感受野池化不同分辨率的特征来挖掘上下文信息 Encoder decoder逐步重构空间信息来更好
  • chatGTP给出的python版快速排序

    chatGTP给出的python版快速排序 def quick sort arr 快速排序函数 对给定的数组 arr 进行原地排序 param arr 待排数组 return 原地排序后的数组 arr quick sort helper a
  • MediaWiki的安装与使用

    文章目录 操作环境与相关配置信息 操作环境 配置信息 软件安装 运行MediaWiki容器 运行MySQL 使用MediaWiki连接MySQL 使用docker compose 操作环境与相关配置信息 操作环境 操作系统 root mas
  • 数据库安装+OGG数据同步

    数据库 Oracle 11g 操作系统 linux 7 2 数据库安装 单机 gt ogg搭建 gt 数据同步 一 数据库安装 查看操作系统版本 oracle standbbk cat etc redhat release Red Hat
  • 巧用快捷方式实现自定义Win+R命令(VBS版).

    另一篇文章 巧用快捷方式实现自定义Win R命令 手动版 介绍了如何手动创建自定义Win R命令 这篇文章将介绍如何使用脚本自动创建并管理自定义Win R命令 为什么要使用这个脚本 大家都知道用Win R能输入很多windows内置命令 比
  • Qt Table 的表头合并

    最近接到了开发表格的需求 一般来说网上有很多不错的例子 表格的开发多半使用QtableWeiget或者Qtableview 为了美观 有很多样式设置的代码行 基本外观设置 FriendTable gt setFrameShape QFram