小编pas*_*sbi的帖子

如何覆盖qt中的标签宽度?

我只需要知道如何在QTextEdit中更改Qt中的选项卡大小.我的Google和stackoverflow搜索返回null.提前致谢.

c++ fonts qt editor qtextedit

19
推荐指数
4
解决办法
9167
查看次数

我可以为我添加一个.gitignore文件来覆盖项目.gitignore吗?

我在OS X机器上的Android Studio中使用Git,我希望有一个.gitignore覆盖.gitignore项目中的个人文件(我希望我忽略.iml文件).可以这样做,怎么做?

我试图.gitignore在我的家庭目录中创建一个文件,其中包含以下行:

# Android Studio
.*.iml
*.iml
Run Code Online (Sandbox Code Playgroud)

我已经使用此命令使git使用我的文件git config --global core.excludesfile ~/.gitignore,但它不起作用.

有任何想法吗?

git gitignore

12
推荐指数
1
解决办法
2291
查看次数

如何从任何容器中删除?

我想从容器中删除某些物品.问题是,我不知道它是什么样的容器.大多数STL的算法著名不在乎容器:如find_if,copy_if等所有的工作或多或少与任何容器类型.

但删除呢?对于vector类似容器,存在remove-erase-idiom,然而,其不能应用于例如set类似容器.使用模板特化或重载,我可以专门为特定的容器但没有规模,当其他容器(unordered_set,list,...)应该考虑了.

我的问题是: 如何实现一个有效地从任何容器中删除某些项目的功能?首选签名:

template<typename Ts, typename Predicate>
void remove_if(Ts& ts, const Predicate& p);
Run Code Online (Sandbox Code Playgroud)

或者,更具体:我如何区分set类似容器(快速插入/删除,没有自定义顺序)和vector类似容器(慢插入/删除,自定义顺序)?是否有(常用的)容器不适合任何一种类别?

编辑:我刚刚发现std::experimental::erase_if,它有许多(所有?)容器的重载.也就是说,只有在不使用的情况下,我才接受解决方案std::experimental.

c++ containers stl c++11

7
推荐指数
1
解决办法
236
查看次数

如何推(使用libgit2)

如何使用libgit2进行推送?(就像git push origin master在控制台上)

我想使用C版本.克隆,打开,添加文件到索引和提交工作就像魅力(见代码).

test-bare-repository是本地的.

不幸的是,参考和文档对我没有帮助.例子非常罕见,而且大部分已经过时(像这样,git_push_new() 功能似乎已经消失).

我现在猜几个小时了,我想我尝试了参考示例中所有有意义的代码片段组合.

编辑:我担心根本不可能用libgit2做到这一点.任何人都可以建议我参考,非常/伪造我的恐惧?

还有一些消息来源([1] ,[2] )在互联网/邮件列表是说,这是不可能的libgit2推现在,但将有可能soonish.然而,这些来源已经过时了.

引用包含一些与推送相关的函数(至少按名称).但似乎没有一个像我想要的那样工作:(

c qt libgit2

6
推荐指数
1
解决办法
1641
查看次数

在悬停时突出显示自定义QWidgetAction

我的应用程序有一个QMenuBar带有多个QMenus的,每个都有多个QActions和sub QMenu。大多数QAction-item是QWidgetAction使用重新实现的QWidgetAction::createWidget方法的派生。

通常,QActions和都会QMenu在鼠标悬停时突出显示。即使QWidgetAction不闹事,直到在这里:

有关突出显示如何工作的动画图形

但是,一旦我覆盖QWidgetAction::createWidget以返回自定义QWidget

QWidget* MyWidgetAction::createWidget(QWidget* parent) { return new MyWidget(parent); }
Run Code Online (Sandbox Code Playgroud)

突出显示不再起作用。所以我自己实现了:

void MyWidget::set_highlighted(bool h)
{
  setBackgroundRole(h ? QPalette::Highlight : QPalette::Window);
  setAutoFillBackground(h);
}
void MyWidget::enterEvent(QEvent*) override { set_highlighted(true); }
void MyWidget::leaveEvent(QEvent*) override { set_highlighted(false); }
Run Code Online (Sandbox Code Playgroud)

但是,它的行为不符合预期:

突出显示出问题的动画图形

我已经弄清楚,enterEvent直到所有子菜单都关闭后才调用该方法,只有在鼠标离开子菜单或其动作后才会发生延迟(顺便说一句,如何更改延迟?)。与鼠标移动事件相同。

问题:如何正确重新实现悬停式高亮显示?用户将不会注意到自定义窗口小部件和标准的QAction行为有所不同。默认值QWidgetAction::createWidget有什么作用,我该如何重现?我已经看过Qt的来源,但这很令人困惑。

再现动画的代码

实际生产代码

c++ user-interface qt qmenu qt5

5
推荐指数
1
解决办法
430
查看次数

pybind11::dict 中的 pybind11:: 对象

我尝试将 python 解释器嵌入到我的 C++17 应用程序中。Foo我必须从 python 访问位于 C++ 世界中的的对象实例。

所以我想出了以下代码:

#include <pybind11/embed.h>
#include <pybind11/pybind11.h>
#include <iostream>

namespace py = pybind11;
using namespace py::literals;

class Foo
{
public:
  Foo() : v(42) {}
  int get() const { return v; }
  void set(int x) { v = x; }
private:
  int v;
};

PYBIND11_EMBEDDED_MODULE(my_module, m) {
    py::class_<Foo>(m, "Foo")
      .def(py::init<>())
      .def("get", &Foo::get)
      .def("set", &Foo::set);
}

int main()
{
  py::scoped_interpreter guard{};
  using namespace py::literals;

  py::object py_foo = py::cast(Foo());
  auto locals = py::dict(
    "foo"_a …
Run Code Online (Sandbox Code Playgroud)

c++ python pybind11

2
推荐指数
1
解决办法
2899
查看次数

如果我必须重写非虚拟成员函数怎么办

假设我们有一个提供课程的图书馆

struct Base { int foo() { return 42; } };
Run Code Online (Sandbox Code Playgroud)

我不能改变那个班级。 99%的人从不愿意重写foo,因此图书馆设计者并未将其虚拟化。但是我需要重写它:

struct MyClass : Base { int foo() { return 73; } };
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,该库具有接受指向的指针的接口Base。我想插入MyClass,但是当然,由于foo它不是虚拟的,因此接口背后的代码始终会调用Base::foo我要它打电话MyClass::foo

我该怎么办?有没有使Base::foo虚拟的常见模式?

实际上Base::fooQAbstractProxyModel::sourceModel。我正在实现ProxyChain,将许多代理模型抽象为一个代理模型。 QAbstractProxyModel::setSourceModel是虚拟的,但QAbstractProxyModel::sourceModel不是虚拟的,这会带来很多麻烦。

void ProxyChain::setSourceModel(QAbstractItemModel* source_model)
{
  for (auto* proxy : m_proxies) {
    proxy->setSourceModel(source_model);
    source_model = proxy;
  }
  QIdentityProxyModel::setSourceModel(source_model);
}

QAbstractItemModel* ProxyChain::sourceModel() const
{
  return m_proxies.front()->sourceModel();
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism dynamic-binding c++17

1
推荐指数
1
解决办法
70
查看次数