我在Windows 7旗舰版32位上使用Qt 4.7.
在QMainWindow
我的计划中有一个QDockWidget
.我注意到如果我通过标题栏上的最小化按钮最小化主窗口,则在恢复它之后,停靠停靠窗口小部件.我没有写任何支持这样的功能!
这是怎么发生的以及如何防止这种情况?
谢谢.
在C#应用程序中,有哪些好方法可以检测连接到计算机的某些设备的存在?当然是以编程方式.我需要支持Windows XP和7.
背景
我已经获得了一个使用某些连接设备的巨大C#应用程序.这些设备是定制硬件,并非设计用于没有软件.当C#应用程序启动时,它会搜索此类连接的设备并在适当时与它们通信.可以有多个连接的设备.我没有查看搜索设备的源代码.使用USB或串行电缆将设备插入PC.它们在设备管理器中显示为COM端口.有时PC和设备之间可能有USB集线器或串行到USB转换器.
当设备与某个USB集线器连接或使用某些串口转USB转换器时,软件有时无法正常检测到该设备.有时它因PC而异.我们不确定它是否会导致一些司机.
我被告知要研究设备搜索算法,如果可能的话,提出更好的解决方案并替换当前的实现.我以前没有完成这类任务,我需要了解Windows如何管理设备.
如何在C#中搜索特定的连接设备?什么是一些好的做法,我应该注意或避免什么?
对于那些喜欢这种事情的人来说,这是一个编码问题.让我们看一下函数的实现(当然是用你选择的语言),它返回一个指定整数的人类可读字符串表示.例如:
特别聪明/优雅的解决方案的奖励积分!
这似乎是一种毫无意义的练习,但是这种算法有许多真实的应用程序(虽然支持高达十亿的数字可能有点过分:-)
检查以下代码:
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) 我正在尝试使用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有什么问题?
谢谢.
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";
?
谢谢.
我反复使用一对QComboBox
,并QListWidget
在一个项目中.他们的交互是高度耦合的 - 当在组合框中选择项目时,列表以某种方式被过滤.我在多个对话框实现中复制粘贴这两个小部件之间的所有信号和插槽连接,我认为这不是一个好主意.
是否可以创建一个自定义小部件,它将容纳这两个小部件,并将所有信号和插槽连接在一个地方?如下所示:
class CustomWidget
{
QComboBox combo;
QListWidget list;
...
};
Run Code Online (Sandbox Code Playgroud)
我想将此小部件用作单个小部件.
给出以下参数:
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.
以下代码:
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程序.
我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)