我在Qt中有一个基于QML的应用程序,它在运行时生成一些警告:
QDeclarativeExpression:表达式"(function $ text(){return pinyin})"取决于非NOTIFYable属性:hanzi :: DictionaryEntry :: pinyin
我相信它指的是这个类有一些没有通知符的属性(因为不需要):
#ifndef DICTIONARYENTRY_H
#define DICTIONARYENTRY_H
namespace hanzi {
class DictionaryEntry : public QObject {
Q_OBJECT
Q_PROPERTY(QString simplified READ simplified)
Q_PROPERTY(QString traditional READ traditional)
Q_PROPERTY(QString pinyin READ pinyin)
Q_PROPERTY(QString definition READ definition)
public:
explicit DictionaryEntry(QObject* parent = 0);
const QString& simplified() const;
const QString& traditional() const;
const QString& pinyin() const;
const QString& rawDefinition() const;
const QStringList& definitions() const;
const QString& definition() const;
void setSimplified(const QString& v);
void setTraditional(const QString& v);
void setPinyin(const …Run Code Online (Sandbox Code Playgroud) 我想使用谷歌协议缓冲区存储数据(另一种序列化格式也可以),然后有一个用于浏览该数据的UI.是否有允许我这样做的C++框架/ API?
例如,它可以使用protobuf的反射接口,然后将数据填入Qt的QTableView(或其他工具包).我可以自己编写这样的代码 - 但是,我更愿意重用现有代码,这就是我在这里寻求建议的原因!
或者是否有更多通用的UI工具包可以显示可通过某些反射API访问的数据?
如何检测用户是否已安装软件,如果是,如何提供删除旧版本的可能性?
我写了一些行来检查.这是正确的吗?如果这是正确的,那么我该如何让用户选择是继续安装还是卸载旧版本?
#define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\setupname_is1"
var
uninstallPath: string;
function InitializeSetup: Boolean;
begin
if (RegQueryStringValue(HKLM,'{#UNINSTKEY}','UninstallString',uninstallPath)) and
(uninstallPath <> '') and (fileexists(uninstallPath)) then
begin
Result :=
(MsgBox(CustomMessage('NotVerifiedVersionFound'), mbConfirmation,
MB_YESNO or MB_DEFBUTTON2) = IDYES);
end;
{ ... }
end;
Run Code Online (Sandbox Code Playgroud) 我公司最近从VS2005升级到VS2010.我们有一个庞大的项目,它使用了许多模块,这些模块被静态链接到exe中.但是VS2010中的链接似乎存在一些问题.
为了解释我们的问题,我们构建了一个最小的示例项目,其组成如下图所示:

有一个应用程序使用库A中的一个函数.库A调用每个库B和库C的一个函数.这两个库调用库D提供的函数.
对于埃克1下框架和参考我们设置的一切虚假除了链接库依赖其设置为true.加入的唯一引用被链接到库中的.对于每个库,所有设置都设置为false.库A仅引用对B和C的引用,以及仅引用D的引用.图书馆D没有参考.
构建应用程序时,它可以正常工作.应用程序注意到库A正在使用库B和C,它们正在使用库D,所以它知道它也必须链接这些库.libs没有问题地链接到exe.
现在,我们在改变一些东西,比方说,库d.只是一点点差异,只有一个字母.现在我们尝试再次构建应用程序,它注意到更改并重新编译库D,但是:它不再链接到它.其结果是在链接错误文库B和C ^,因为它们使用的库d.我们必须首先运行Rebuild,以强制完整的建筑,然后一切都再次链接.
对于最小示例以及我们的主项目,都会发生这种情况.当然,我们可以添加每个库作为exe的附加依赖项,但如果它可以像第一次构建项目时那样工作并且在代码更改后继续工作将会很好.我们注意到,当将Use Library Dependency Inputs设置为true时,它再次起作用,但是它不会链接*.lib文件,而是链接*.obj文件,这当然不是我们想要的.
有没有人提出类似的经验或有任何人解决这个问题?这是VS2010的错误行为吗?
TIA.
ps:所有库和可执行文件都是本机C++.
编辑:(从此网站获取的解决方法)
在文件中%ProgramsFile%\MSBuild\Microsoft.cpp\v4.0\Microsoft.CPPBuild.Targets有一行
<Target Name="GetResolvedLinkLibs" Returns="@(LibFullPath)" DependsOnTargets="$(CommonBuildOnlyTargets)">
Run Code Online (Sandbox Code Playgroud)
如果您将该行更改为
<Target Name="GetResolvedLinkLibs" Returns="@(LibFullPath)" DependsOnTargets="$(CommonBuildOnlyTargets);ResolvedLinkLib">
Run Code Online (Sandbox Code Playgroud)
链接正常工作,所有需要的库都隐式链接.链接器输出不仅显示lib_a.lib,还显示所有其他链接库lib_b,lib_c,lib_d,而不是手动添加它们作为exe的依赖项.
这似乎是一种解决方法,然后是解决方案,也许有一种实现隐式链接的正确方法.
我知道有一个功能,QWidget::setWindowOpacity(qreal level)但正如文档中所写,这只适用于Windows.
有没有办法让布局内部的小部件也不透明?
我正在尝试做的是一个动画,其中小部件正在消失.我曾经使用偏好对话框进行了操作.
那么你认为有一种方法或解决办法来实现布局内的小部件的不透明度吗?你会怎么做?
提前致谢!
我有两个简单的模型问题和选择(一个问题有多个选择).我使用内联formset添加Choices以及添加Questions(通过modelAdmin功能).
class Question(models.Model):
category = models.CharField(max_length=50)
question_text = RichTextField(max_length=2000, verbose_name="Question Text", blank=True)
class Choice(models.Model):
question = models.ForeignKey(Question)
description = RichTextField(max_length=500, verbose_name="Choice Description")
is_correct = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
现在,Choice和Question的字段是在django-ckeditor中定义的RichTextField .问题是当我点击"添加另一个选择"时,我得到了一个uncaught exception: [CKEDITOR.editor] The instance "id_choice_set-__prefix__-description" already exists,这破坏了ckeditor的功能.
任何想法/建议如何解决这个问题?我认为一些JS调整可以提供帮助,但我对JS/Jquery的知识非常有限
谢谢
这个例子用gcc 4.8.3编译并运行良好:
#include <memory>
#include <functional>
#include <iostream>
int main() {
auto str = new const char[6]{'h', 'e', 'l', 'l', 'o', '\0'};
std::unique_ptr<const char[], std::function<void(const char *)>> u_ptr(str, [](const char *s){ delete[] s; });
std::cout << u_ptr.get() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用Visual Studio Professional 2013时,它无法编译(抱怨已删除的功能).Visual Studio 2013还没有这个功能吗?或者我的示例代码是错误的,gcc忽略了我的错误?
错误是:
main.cpp(8):错误C2280:'std :: unique_ptr> :: unique_ptr>(_ Ptr2,_Dx2)':尝试用[_Ptr2 = const char*,_Dx2 = main ::] C:引用已删除的函数程序文件(x86)\ Microsoft Visual Studio 12.0\VC\INCLUDE\memory(16 16):请参阅'std :: unique_ptr> :: unique_ptr'的声明
我使用以下工具/版本进行编程:Windows 10/VS2017 Professional/C++
升级到15.5.1后,我收到以下错误:
MIDL2338:交换机是矛盾的 - no_robust与 - 目标
Microsoft编译器错误说明列表说:编译IDL文件时,不能同时使用/ osf和/ ms_ext命令行开关.
我的项目属性中没有指定这些开关.
我试图降级回15.4.1,但发现除非它是N-1,否则不可能恢复到旧版本.这是基于我读过的许多博客(包括Stack Overflow).
我碰到了一堵墙,我一直处于停滞状态,直到找到这个开关问题.
非常感谢您的帮助.
我使用下面的代码向listwidget添加两个项目.现在我想将"Weekend Plus"设置为listwidget中的选定项目,我该怎么做?
QStringList items;
items << "All" << "Weekend Plus" ;
ui->listWidgetTimeSet->addItems(items);
Run Code Online (Sandbox Code Playgroud) 在我的一个项目中,我正在使用QTimer,我想知道是否有可能获得QTimer的剩余时间以便让用户知道"下次超时的时间:10秒"或类似的东西......是那可能吗?如果不是这样,有没有关于如何实现这一点的好主意?
也许我要写自己的Timer ...
qt ×5
c++ ×4
ckeditor ×1
django ×1
inno-setup ×1
javascript ×1
jquery ×1
linker ×1
midl ×1
opacity ×1
qlistwidget ×1
qml ×1
qt4 ×1
qwidget ×1
unique-ptr ×1
vcxproj ×1
visual-c++ ×1
warnings ×1