有几个词有类似的(在某种意义上)含义:
选项,设置,属性,配置,首选项
英语不是我的母语.你能用简单的英语解释一下这个区别吗?我认为以下模板可能有用:
- 在GUI中使用XXX以便让人们更改应用程序的行为(可能是首选项或设置?)
- 在GUI中使用YYY以便让人们更改对象的部分(可能是属性或选项?)
- 在你的代码中使用ZZZ ......
什么是最佳做法?
我使用大量用C++编写的计算代码,考虑到高性能和低内存开销.它大多使用STL容器vector,并且几乎在每个函数中遍历那些容器.
迭代代码如下所示:
for (int i = 0; i < things.size(); ++i)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
但它会产生签名/未签名的不匹配警告(Visual Studio中的C4018).
替换int某种unsigned类型是一个问题,因为我们经常使用OpenMP pragma,它需要计数器int.
我即将压制(数百个)警告,但我担心我错过了一些优雅的解决方案.
在迭代器上.我认为在适当的地方应用迭代器很棒.我正在使用的代码永远不会将随机访问容器更改为list某种东西(因此迭代int i已经是容器不可知),并且总是需要当前索引.您需要键入的所有其他代码(迭代器本身和索引)只会使问题复杂化并模糊底层代码的简单性.
每个C++开发人员都应该知道哪些关于结构化异常的重要观点?
此代码编译并按预期工作(它在运行时抛出,但没关系):
#include <iostream>
#include <boost/property_tree/ptree.hpp>
void foo(boost::property_tree::ptree &pt)
{
std::cout << pt.get<std::string>("path"); // <---
}
int main()
{
boost::property_tree::ptree pt;
foo(pt);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是只要我添加模板并将foo原型更改为
template<class ptree>
void foo(ptree &pt)
Run Code Online (Sandbox Code Playgroud)
我在GCC中遇到错误:
test_ptree.cpp: In function ‘void foo(ptree&)’:
test_ptree.cpp:7: error: expected primary-expression before ‘>’ token
Run Code Online (Sandbox Code Playgroud)
但MSVC++没有错误!错误在标记的行中<---.再次,如果我将问题线改为
--- std::cout << pt.get<std::string>("path"); // <---
+++ std::cout << pt.get("path", "default value");
Run Code Online (Sandbox Code Playgroud)
错误消失(问题是明确的<std::string>).
Boost.PropertyTree需要Boost> = 1.41.请帮助我理解并修复此错误.
请参阅模板:模板功能与类的模板成员函数不兼容 - 一个类似的流行问题包含其他好的答案和解释.
我将在一些其他控件下面添加一个python控制台小部件(进入C++ GUI):
许多类将暴露给python代码,包括对GUI的一些访问(也许我会考虑PyQt).
我应该在一个单独的线程中运行Python代码吗?
我认为这是一个很好的方法,因为GUI在执行长命令时不会被冻结.但另一方面,是否应禁用其他控件来保留对象的状态并避免冲突?
有关使用Qt和DWM的示例,请参阅在Windows上使用Blur Behind.替代文字http://labs.trolltech.com/blogs/wp-content/uploads/2009/09/blurbehind2.png
我想用Qt创建一个Windows Aero Glass窗口,现在它看起来像这样:

但在调用一些my_window->repaint()我的窗口后,标签就会破碎:

但现在,如果我稍微调整窗口大小,它会重新正确重新绘制.
问题是:如何擦除窗口背景,以便小部件在干净的玻璃上绘画?
重现问题的简短代码是(Vista with Aero):
class Window(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.setLayout(QVBoxLayout())
self.layout().addWidget(QLabel("This is the text"))
# let the whole window be a glass
self.setAttribute(Qt.WA_NoSystemBackground)
from ctypes import windll, c_int, byref
windll.dwmapi.DwmExtendFrameIntoClientArea(c_int(self.winId()), byref(c_int(-1)))
def mousePressEvent(self, event):
self.repaint()
Run Code Online (Sandbox Code Playgroud)
您可以立即单击该窗口,也可以单击Alt-Tab几次.
无论如何,使用带有Aero Glass的标签并不是我所需要的,因为QLabel不知道如何用一缕光线(如窗口的标题)来绘制自己.我需要的是清洁"玻璃"的一般方法.
如何更改我在本地存储库中提交的时间?
假设我已经完成了几次提交,并注意到我的计算机上的日期是错误的.假设这些提交还没有推到任何地方.
如何在Qt中叠加小部件?
我想创建一些小部件并将它们放置在布局之外,而是在更改其他小部件的几何体时调整它们的大小和位置.
像屏幕截图上的按钮:
我有一个配置了Windows身份验证和URL重写的IIS实例,因此它基本上用作反向代理.我的后端服务器(在Linux上运行)需要一个REMOTE_USER标头.是否可以配置IIS以将有关经过身份验证的用户的信息传递给后端服务器?
authentication iis reverse-proxy basic-authentication http-headers
有一个庞大的Python应用程序,包含许多第三方包和二进制库.以下是我的要求概述:
easy_install)py.test在我的情况下).pyc无源分发选项(-only)该应用程序至少应该是"可移植的"Python包(可以使用VirtualEnv安装在任何地方).
我有什么选择?我应该坚持使用setuptools(distribute)吗?我应该推出自定义安装程序吗?
正在开发的应用程序是专有的,但它为开发人员提供了Python API,我希望它看起来和感觉尽可能的pythonish和hackerish.
c++ ×4
python ×2
aero-glass ×1
boost ×1
commit ×1
distribution ×1
dwm ×1
exception ×1
gcc ×1
http-headers ×1
iis ×1
integration ×1
layout ×1
mercurial ×1
options ×1
overlay ×1
properties ×1
pyqt ×1
qt ×1
refactoring ×1
repository ×1
seh ×1
settings ×1
setuptools ×1
visual-c++ ×1