保存UI设置QSettings既麻烦又有问题,因为每次必须使用setValue()和value()运行功能,并且还要定义可能在大型应用程序中出错的组,应用程序名称和组织:
QSettings settings(qApp->applicationDirPath() + "/" + qApp->applicationName() + ".ini" , QSettings::IniFormat) ...
settings.beginGroup("someGroup");
settings.setValue("someKey", "blah blah");
QString str = settings.value("someKey");
settings.endGroup();
Run Code Online (Sandbox Code Playgroud)
但是使用JSON可以更简单:
QJsonObject obj;
obj["someKey"] = "blah blah"
...
Run Code Online (Sandbox Code Playgroud)
保存和恢复ui设置的最佳做法是什么?
保存每个键/值QSettings?
保存QJson并随后保存QSettings?
QJson仅保存(使用另一种机制来定义组和应用程序)?
还有其他想法吗?
总是当我想在 Linux 中使用 make 命令进行编译时,我使用 -j9 运行它来设置要使用的线程数。有没有办法将其永久设置在环境路径或 .bashrc 文件或任何其他方式中?
我写了这个简单的程序等待2秒然后更新文本框:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 10; i++)
{
doSomething(i);
}
}
public void doSomething(int i)
{
System.Threading.Thread.Sleep(2000);
textBox1.Text += "this …Run Code Online (Sandbox Code Playgroud) 我有大小为 32、48、64 的 bool 数组(每个布尔值代表一个位)。如何将它们转换为具有良好性能的数字(int、unsigned int、double48、double64)?例如 :
bool ar[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1}
int num = bitArrayToInt32(ar,32);// num = 65
Run Code Online (Sandbox Code Playgroud) oxfc是负面的,但我把它作为a byte,它的值是252,有没有办法将其转换为签名byte或int?
我找到了这个方法:
(BitConverter.ToInt16(new byte[2] { 0, 0xfc }, 0) / 256).ToString()
Run Code Online (Sandbox Code Playgroud)
但还有更好的方法吗?
假设我想对一组布尔值求和:
bool arrray[LARGE_SIZE];
Run Code Online (Sandbox Code Playgroud)
下面哪一段代码速度更快?
int sum=0;
for(int i=0;i<LARGE_SIZE)
if(array[i]) sum++;
Run Code Online (Sandbox Code Playgroud)
和
int sum=0;
for(int i=0;i<LARGE_SIZE)
sum+=array[i] ;
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以加快速度吗?这些代码在循环中使用,即使很小的速度差异也很重要。