小编Don*_*alo的帖子

如果主窗口最小化,QDockWidget将关闭

我在Windows 7旗舰版32位上使用Qt 4.7.

QMainWindow我的计划中有一个QDockWidget.我注意到如果我通过标题栏上的最小化按钮最小化主窗口,则在恢复它之后,停靠停靠窗口小部件.我没有写任何支持这样的功能!

这是怎么发生的以及如何防止这种情况?

谢谢.

c++ qt

6
推荐指数
2
解决办法
1864
查看次数

如何检测某些设备的存在

在C#应用程序中,有哪些好方法可以检测连接到计算机的某些设备的存在?当然是以编程方式.我需要支持Windows XP和7.

背景

我已经获得了一个使用某些连接设备的巨大C#应用程序.这些设备是定制硬件,并非设计用于没有软件.当C#应用程序启动时,它会搜索此类连接的设备并在适当时与它们通信.可以有多个连接的设备.我没有查看搜索设备的源代码.使用USB或串行电缆将设备插入PC.它们在设备管理器中显示为COM端口.有时PC和设备之间可能有USB集线器或串行到USB转换器.

当设备与某个USB集线器连接或使用某些串口转USB转换器时,软件有时无法正常检测到该设备.有时它因PC而异.我们不确定它是否会导致一些司机.

我被告知要研究设备搜索算法,如果可能的话,提出更好的解决方案并替换当前的实现.我以前没有完成这类任务,我需要了解Windows如何管理设备.

如何在C#中搜索特定的连接设备?什么是一些好的做法,我应该注意或避免什么?

c# windows hardware

6
推荐指数
1
解决办法
4429
查看次数

使人类可读的整数表示

对于那些喜欢这种事情的人来说,这是一个编码问题.让我们看一下函数的实现(当然是用你选择的语言),它返回一个指定整数的人类可读字符串表示.例如:

  • humanReadable(1)返回"one".
  • humanReadable(53)返回"五十三".
  • humanReadable(723603)返回"733,363,33".
  • humanReadable(1456376562)返回"十亿,四亿五千六百万,三十七万六千五百六十二".

特别聪明/优雅的解决方案的奖励积分!

这似乎是一种毫无意义的练习,但是这种算法有许多真实的应用程序(虽然支持高达十亿的数字可能有点过分:-)

algorithm numbers

5
推荐指数
1
解决办法
1503
查看次数

使用比较器进行STL设置

检查以下代码:

string toLowerCase(const string& str) {
    string res(str);
    int i;

    for (i = 0; i < (int) res.size(); i++)
        res[i] = (char) tolower(res[i]);

    return res;
}

class LeagueComparator
{
public:
    bool operator()(const string& s1, const string& s2)
    {
        return toLowerCase(s1) < toLowerCase(s2);
    }
};

int main()
{
    set<string, LeagueComparator> leagues;
    set<string, LeagueComparator>::iterator iter;

    leagues.insert("BLeague");
    leagues.insert("aLeague");    // leagues = {"aLeague", "BLeague"}
    leagues.insert("ALeague");

    for (iter = leagues.begin(); iter != leagues.end(); iter++)
        cout << *iter << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

aLeague
BLeague …
Run Code Online (Sandbox Code Playgroud)

c++ stl comparator

5
推荐指数
1
解决办法
1万
查看次数

为什么ptr_fun(tolower)不能在mingw中编译?

我正在尝试使用Qt Creator 2.0.1编译以下程序:

void f()
{
    string a = "abc";
    transform(a.begin(), a.end(), a.begin(), ptr_fun(tolower));
}
Run Code Online (Sandbox Code Playgroud)

mingw抛出以下错误:

调用ptr_fun没有匹配函数(<unresolved overloaded function type>)

使用VC++ 2010 Express可以很好地编译该函数.mingw有什么问题?

谢谢.

c++ mingw

5
推荐指数
1
解决办法
1024
查看次数

为什么char*s ="你好"; 被允许?

char *s = "hello";
Run Code Online (Sandbox Code Playgroud)

上面的代码在程序的只读部分分配了6个字节(我忘记了部分的名称)来存储字符串hello.然后,s初始化为指向字符串的第一个字符hello.修改字符串"hello"是未定义的行为.此外,"hello"它本身也是不变的.该程序无权更改只读部分.

我正在使用MS VC++ 2010 Express.我的问题是,为什么编译器允许s(哪一个char *)指向常量字符串?不应该有编译器错误?编译器不应该强迫我们使用const char *s = "hello";而不是char *s = "hello";

谢谢.

c pointers

5
推荐指数
1
解决办法
2078
查看次数

在Qt中将多个小部件合并为一个小部件

我反复使用一对QComboBox,并QListWidget在一个项目中.他们的交互是高度耦合的 - 当在组合框中选择项目时,列表以某种方式被过滤.我在多个对话框实现中复制粘贴这两个小部件之间的所有信号和插槽连接,我认为这不是一个好主意.

是否可以创建一个自定义小部件,它将容纳这两个小部件,并将所有信号和插槽连接在一个地方?如下所示:

class CustomWidget
{
    QComboBox combo;
    QListWidget list;

    ...
};
Run Code Online (Sandbox Code Playgroud)

我想将此小部件用作单个小部件.

c++ qt widget

5
推荐指数
1
解决办法
4854
查看次数

给出一些参数如何计算音频中的样本数?

给出以下参数:

Sample size: 16
Channel count: 2
Codec: audio/pcm
Byte order: little endian
Sample rate: 11025
Sample type: signed int
Run Code Online (Sandbox Code Playgroud)

如何确定N miliseconds录制音频的样本数?我是音频处理的新手.编解码器是PCM所以我猜它是未压缩的音频.

我在Windows 7旗舰版x64上使用Qt 4.8.

c++ audio qt signal-processing

5
推荐指数
2
解决办法
7804
查看次数

将DateTime格式化为字符串

以下代码:

DateTime dt = new DateTime(2013, 9, 13, 14, 34, 0);
string s = dt.ToString("MM/dd/yyyy");

textBox1.AppendText(DateTime.Now + "\n");
textBox1.AppendText(s + "\n");
textBox1.AppendText(dt.ToString() + "\n");
Run Code Online (Sandbox Code Playgroud)

在文本框中生成以下输出:

13.09.2013 1441.28
09.13.2013
13.09.2013 1434.00
Run Code Online (Sandbox Code Playgroud)

从输出的第一行开始,很明显在我的PC的区域设置中,日期/时间被格式化为date.month.year HHmm.ss.

输出的第二行让我很困惑.虽然我MM/dd/yyyy为变量指定了格式s,但DateTime对象的格式为MM.dd.yyyy.为什么?

这是.NET Framework 4上的C#WPF程序.

c# wpf datetime string-formatting

5
推荐指数
1
解决办法
185
查看次数

WPF网格没有垂直拉伸

Grid在主窗口中有以下内容:

<Grid Name="gridMain" Width="Auto" VerticalAlignment="Stretch" Height="Auto">
</Grid>
Run Code Online (Sandbox Code Playgroud)

UserControl在网格中动态添加.主窗口只有这个网格.我希望网格水平和垂直拉伸,并应填满整个窗口.网格水平拉伸但不垂直拉伸.知道为什么吗?我需要做什么才能使网格垂直伸展?

编辑

这是完整的XAML.

<Window x:Class="Sensitech.TurboValidator.UserControls.ConveyorBelt"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ConveyorBelt" Height="329" Width="714" xmlns:my="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">
    <Grid Name="gridMain" Width="Auto" VerticalAlignment="Stretch" Height="Auto" Background="Cyan">

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

c# wpf grid user-interface

4
推荐指数
1
解决办法
3万
查看次数