我试图创建一个自定义的widget插件(如描述在这里),它会提供一些控件的集合,与容器,其布局,我想接触到Qt Creator中的表格编辑器一起.
在我的widget的插件界面中,我修改了isContainer()函数以返回true.
bool MyWidgetPlugin::isContainer() const
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
此自定义窗口小部件的UI文件的Object Inspector的类列看起来类似于:
- QWidget <- The Custom Widget
| - QPushButton
| - QWidget <- This is the widget who's layout I'd like to expose to the form editor.
Run Code Online (Sandbox Code Playgroud)
这允许我在表单编辑器中将新的小部件放到我的自定义小部件上,但不考虑布局.新添加的窗口小部件可能会被放在其他窗口小部件之上,包括自定义窗口小部件中内置的窗口小部件,我无法更改自定义窗口小部件的布局.
很明显,表单编辑器目前无法知道内部窗口小部件是否旨在提供布局,但我不确定如何执行此操作并且无法找到充当容器的自定义窗口小部件的示例.我已经研究了容器扩展示例,但它明确指出它是用于多页面小部件,所以我认为有一个更好的解决方案,我正在努力实现.
如何创建此自定义窗口小部件,以便将内部窗口小部件的布局公开给窗体编辑器,或者我应该以不同的方式接近它?
更新:通过完成我一直避免的容器扩展示例,我能够获得所需的功能.我只是将窗口小部件视为一个多页面窗口小部件,它总是返回同一页面.
但是,这会在窗口小部件的窗体编辑器上下文菜单中启用多页操作,例如插入页面,这会产生不良副作用.使用此操作会导致创建一个无法与之交互的小空白窗口小部件,并将其置于自定义窗口小部件的右上角.虽然这是一个小问题,但它阻止我将此解决方案作为答案发布.
我正在处理非常大的文件,大小超过数百GB.用户需要能够在磁盘之间移动这些文件,并且是在没有默认文件管理器的受限系统上.用户可能会意识到他们犯了错误并取消了操作,据我所知,用户必须等待当前的复制或重命名操作才能完成.这可能让他们感到沮丧,因为他们等待了几分钟,只是看到他们的许多GB文件仍然被复制.在复制的情况下,我可以删除第二个文件,但在重命名的情况下,我用来移动文件,我必须反向重复操作以撤消它,这是不可接受的.
有没有办法中断我在QFile文档中没有看到的copy()和rename(),或者我需要将自己的类放在一起来处理复制和重命名?
我在尝试启用poco_trace和poco_debug日志记录时遇到问题。我使用Logger :: setLevel()设置了PRIO_TRACE的级别,但是我仍然没有看到比PRIO_INFORMATION更低的优先级被写入我的日志。这是相关的代码。
// ... In the constructor of my main class
// All Loggers in the program inherit from the Logger found here.
getLogger().setChannel( channel );
getLogger().setLevel( Poco::Message::PRIO_TRACE );
// This prints "Level is 8" to the log, 8 being Message::PRIO_TRACE.
poco_information_f1( getLogger(), "Level is %i", getLogger().getLevel() );
// This however is not printed to the log.
poco_trace( getLogger(), "Trace logging is enabled" );
// ...
// Definition of getLogger()
inline Poco::Logger& Application::getLogger() const
{
// Where logger is …Run Code Online (Sandbox Code Playgroud)