草庐IT

make_widgets

全部标签

c++ - Arcsynthesis OpenGL 3.3 教程的问题 - MAKE 错误

我一直在关注arcsynthesis(arcsynthesis.org/gltut/)教程并在制作过程中遇到以下错误。我使用premake4gmake来生成makefile。====BuildingTut13BasicImpostor(debug)====Creatingobj/Debug/Tut13BasicImpostorBasicImpostor.cppLinkingTut13BasicImpostor/usr/bin/ld:../glsdk/freeglut/lib/libfreeglutD.a(freeglut_window.o):undefinedreferencetosy

c++ - 我应该对已经定义的智能指针使用 make_unique 还是 reset() ?

假设我有一个函数可以选择分配一个对象并返回它://Classmemberstd::dequem_receiveQueue;//Functioninclassthatoperatesonthequeuetemplatestd::unique_ptrGet(){std::unique_ptrresponse;if(!m_receiveQueue.empty()){response=std::make_unique(m_receiveQueue.front());m_receiveQueue.pop();}returnresponse;}我应该改为:response.reset(newT{m

c++ - 将 make_shared 与 protected 构造函数 + 抽象接口(interface)一起使用

给定一个抽象接口(interface)和一个从该接口(interface)派生的实现,其中构造函数受到保护(只能从类工厂创建这些对象-以实现DI模式),我如何在工厂函数中使用make_shared?例如:classIInterface{public:virtualvoidMethod()=0;};classInterfaceImpl:publicIInterface{public:virtualvoidMethod(){}protected:InterfaceImpl(){}};std::shared_ptrCreate(){std::shared_ptrobject=std::mak

c++ - 如何在 Qt Widget 中重新定义 Z-Order

我有两个Widget有单独的实现。他们是……MessageInboxUiComposeMessageUi两者都将全屏显示。在主窗口中,我按以下顺序添加了两个小部件ComposeMessageUi*ptrEditor=newComposeMessageUi(this);//theseareinsideMessageInboxUi*ptrInbox=newMessageInboxUi(this);//MainWindowConstructor所以当我在显示MessageInboxUi时调用ComposeMessageUi的show函数时,它不显示(因为它显示在MessageInboxUi后

c++ - Qt:如何检测一个widget是否被选中?

我没有看到任何信号/槽/函数可以告诉我鼠标是否选择了一个小部件?有没有可能有这样一个函数告诉我当前QWidget是否被选中?我如何区分“选择了当前小部件”和“选择了它的一个子小部件?” 最佳答案 您可以使用hasFocus()函数检查小部件的焦点。focus属性保存小部件是否具有键盘输入焦点。您还可以使用QApplication::focusWidget()获取具有焦点的应用程序的当前小部件。您可以获得指向焦点小部件的指针,例如:QWidget*fw=qApp->focusWidget();当焦点小部件改变时QApplication

c++ - Win32 API : how to make Edit Text to accept unsigned float only in c++?

我正在努力学习win32api:)我在DialogBox中放置了一些编辑文本,我希望它只接受大于0的float我只能通过在资源文件中使用样式“ES_NUMBER”来使编辑文本接受整数,但我找不到任何方法让它接受正浮点值我需要你的帮助谢谢 最佳答案 除了处理EN_CHANGE通知之外,您还可以选择subclassingwindow。这将允许您限制哪些击键是有效的,并且只允许数字、点等。下面的示例显示了如何创建一个编辑控件,将其子类化并过滤输入,以便只允许特定字符。它不处理从剪贴板粘贴等操作,因此您需要扩展它以满足您的特定要求。这种方式

c++ - Make_shared - 自己的实现

我正在尝试自己实现shared_ptr。make_shared有问题。std::make_shared的主要特点是它在连续的内存块中分配计数器block和对象。我怎样才能做同样的事情?我试过这样做:templateclassshared_ptr{private:class_ref_cntr{private:longcounter;public:_ref_cntr():counter(1){}voidinc(){++counter;}voiddec(){if(counter==0){throwstd::logic_error("alreadyzero");}--counter;}long

c++ - 从 Qt 5.6 切换到 Qt 5.7 - 命名空间 std 中的 "no member ' make_unique'

我有一个CMakeQt项目,它使用了多个c++14功能,包括std::make_unique。通常这将通过以下方式处理:LIST(APPENDCMAKE_CXX_FLAGS-std=c++14)或ADD_COMPILE_OPTIONS(-std=c++14)我想将项目从5.6版升级到5.7版,但在测试构建期间出现多次失败并出现错误nomember'make_unique'innamespacestd我已验证所有适当的header和编译选项都已到位,并排除了任何环境问题。使用Qt5.7绝对是个问题。有什么解决方法吗? 最佳答案 原来这

c++ - 有什么方法可以欺骗 std::make_shared 使用默认初始化吗?

您应该使用std::make_shared确保带有计数器的block存储在数据旁边。不幸的是内部std::make_shared对T使用零初始化(即使用T()来初始化数据block)。有什么办法可以让它使用默认初始化吗?我知道我可以使用std::shared_ptr(newT,[](autop){deletep;}),但我最终会在这里进行两次分配(数据和计数器block不会彼此相邻)。 最佳答案 创建一个派生类来执行简单的构造。structD:T{D(){}//Non-trivialconstructor.Default-initi

c++ - reference_wrapper : make_pair VS Class Template Argument Deduction (CTAD)

为什么make_pair和类模板参数推导(CTAD)不同意生成哪种类型?#include#include#include#includeintmain(){intmyInt=5;std::reference_wrappermyIntRef=myInt;automyPair=std::make_pair(myInt,myIntRef);std::pairMy2ndPair(myInt,myIntRef);std::cout输出:St4pairIiRiE//std::pairSt4pairIiSt17reference_wrapperIiEE//std::pair>更新:为什么std::p