我正在使用一个小的FAT16文件系统,我想为存储配置信息的indidual XML文件生成CRC值.如果数据发生变化或被破坏,我希望能够检查CRC以确定文件仍处于其原始状态.
问题是,如何在不更改文件本身的CRC值的情况下将CRC值放入文件中?我可以想到几个解决方案,但我认为必须有一个相当标准的解决方案来解决这个问题.
我有两个QDialog堆叠在一起,其中一些数据在每个对话框的布局中显示在一个QWidget中显示(一个小部件以图形方式显示一个计数).
在当前显示的QDialog中,用户可以更改该数据.此更改将传播到两个小部件,并在当前QDialog中显示正确的计数.但是,当用户关闭该QDialog,并且下面的那个变得可见时,显示计数的QWidget会显示旧值,然后再更新为正确的值.
我知道下面的QWidget在显示其他QDialog之前具有正确的值,但我似乎无法让Dialog 在可见之前更新.我试过这个,但仍然隐藏着:
hiddenDialog->layout()->activate()
hiddenDialog->layout()->update()
但是在显示对话框之后,它仍然无法实际更新.我的问题似乎与Qt有关:如何强制隐藏的小部件来计算其布局?,除了我想在设置Qt :: WA_DontShowOnScreen后显示QDialog.打开Qt :: WA_DontShowOnScreen并更新对话框后,我尝试设置:
dialog->setAttribute(Qt::WA_DontShowOnScreen, false);
dialog->show()
但对话框仍未显示在屏幕上.有没有办法让它再次可见?或者是否有一些方法可以让对话框和窗口小部件在被其他对话框隐藏时更新?
以下是按要求提供的更多详细信息:有两个类,Dialog1和Dialog2,每个类都扩展了相同的基类BaseDialog,它扩展了QDialog类.
BaseDialog有一个插槽,只要GlobalCount发生变化就会被调用.此插槽更新countWidget,用于绘制计数图片.
void BaseDialog::updateCountWidget()
{
_countWidget->updateCount(globalCount);
_countWidget->update();
}
Run Code Online (Sandbox Code Playgroud)
Dialog1有一个插槽(从QPushButton click()连接)创建并显示Dialog2:
void Dialog1::showDialog2()
{
Dialog2* dialogTwo = new Dialog2();
dialog2->show();
}
Run Code Online (Sandbox Code Playgroud)
Dialog2有两个插槽(连接到QPushButton信号),一个从全局计数中减去,另一个用于关闭对话框.当减去全局计数时,它会发出连接到Dialog1和Dialog2的updateCountWidget()槽的信号.
void Dialog2::subtractCount()
{
GlobalCount.subtractOne();
}
void Dialog2::userClosed()
{
accept();
}
Run Code Online (Sandbox Code Playgroud)
当我单击减去按钮时,我可以看到Dialog2的_countWidget正确更新.但是,当我关闭Dialog2,并且可以再次看到Dialog1时,Dialog1的_countWidget显示一秒钟的原始计数值,然后更新为新值.
我的目标是防止这种瞬间更新,因为它看起来对用户来说非常时髦.这已经变得非常漫长,但我很欣赏任何见解!
我正在研究一些生产软件,在.NET框架上使用C#.我真的希望能够在项目中使用LINQ.我相信它需要.NET版本3.5(如果我错了,请纠正我).此应用程序是一个商业软件应用程序,需要在客户端的工作PC上运行.假设他们有.NET 3.5,或假设他们不介意升级到最新版本是否合理?
我只是想知道在强制执行应用程序的框架升级方面的共识是什么.