我是Qt的新手,目前正在使用Qt Creator和原始C++代码.我设法通过向两者添加QAction对象来实现一些简单的功能,包括菜单和工具栏.但是我遇到了一些困难:
我想要做的是有一个菜单选项,它有一个子菜单,例如New,带有一个项目的子菜单,并在QToolbar上复制它.我在菜单中管理它:New作为QMenu,子菜单项作为QAction对象.我无法看到如何让它在工具栏中工作,例如一个New按钮,当点击它时,它会运行"默认"QAction(例如第一个子菜单项),但是右边有一个较小的菜单按钮提供所有其他选项.我想这类似于Office工具栏上的撤消/重做按钮.
我正在为Mac OS X和iOS编写一个类库,作为OS X的Cocoa Framework和iOS的静态库发布.为了简化问题,我打算在Xcode中使用多个目标.但是,Mac OS X上的类链接到Cocoa.h,而在iOS上它们链接到Foundation.h.
我的问题基本上是:
或者我可以在头文件中使用预处理器指令来控制框架包含,例如
#ifdef MacOSX
#import <Cocoa/Cocoa.h>
#else
#import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)我目前正在使用Sandcastle,Doxygen和JavaDoc为我编写的代码生成文档.是否可以使用这些包记录XML模式?如果没有,是否有任何(最好是免费!)包可以做到这一点?我可以自己编写文档作为Doxygen或Sandcastle中的额外概念主题,但我宁愿为我做一个工具!
一个例子是(虽然我不是XML Schema的专家!):
/// <summary>Top Node</summary>
<xs:element name="TopNode">
/// <summary>Child Node</summary>
<xs:element name="ChildNode" type="xs:string"/>
</xs:element>
Run Code Online (Sandbox Code Playgroud) 我正在编写一个ASP.NET Web服务,并抛出一个带有消息的SoapException:
throw new SoapException("BANG!", SoapException.ClientFaultCode);
Run Code Online (Sandbox Code Playgroud)
当我创建一个ASP.NET客户端,并请求标签显示SoapException.Message属性时,它会显示类似于以下内容的消息:
System.Web.Services.Protocols.SoapException:BANG!at [DIRECTORY]\WebService1.asmx.cs中的WebServiceException.WebService1.HelloWorld():第23行
是否有一种简单的方法可以简单地呈现消息BANG!而不是整个字符串?或者我应该只使用正则表达式?
我正在尝试使用 OpenBabel,但在为包含文件设置全局搜索路径时遇到了很大的困难。我已经使用 $LD_LIBRARY_PATH 成功链接到库,但是在使用 GNU C++ 编译器进行编译时,它找不到包含文件。Linux 上是否有全局包含环境变量,如果有,是什么?
我在Cocoa中编写一个应用程序,允许用户以3种不同的格式导出数据:CSV,JSON和XML.我已将允许的扩展添加到NSSavePanel:
NSSavePanel* saveFile = [NSSavePanel savePanel];
NSArray* extensions = [[NSArray alloc] initWithObjects:@"csv", @"json" @"xml", nil];
[saveFile setAllowedFileTypes:extensions];
Run Code Online (Sandbox Code Playgroud)
但是,如何设置NSSavePanel以允许用户选择要保存的格式,例如在TextEdit中提供"文件格式"列表框?如果可以,那么我如何确定选择了哪种格式?
编写Bash脚本时,当作为命令行中选项标志的一部分提供时,如何从命令行获取值?
例如以下内容:
./script --value=myText --otherValue=100
Run Code Online (Sandbox Code Playgroud)
如何将myText
和100
值存储在变量$text
and中$num
?
我正在尝试在我的网站上实现Facebook Like按钮,但不是必须将其添加到每个单独的页面,我宁愿将其添加到母版页并使用当前URL.我尝试了以下代码来获取当前的URL:
<a href="<% Request.Url.AbsoluteUri.ToString(); %>">Link</a>
Run Code Online (Sandbox Code Playgroud)
但是,当它运行时,例如在http:// localhost:1234/About.aspx上,链接仅指向http:// localhost:1234而不是完整地址.
我做错了什么,或者不可能以这种方式实现它?
我是C和C++中纯Windows API级功能的完全新手,并且最近一直在尝试使用.NET互操作性.我已经构建了一个简单的库,它已经成功地将数值(int/float等)返回给.NET调用者,但是我没有运气好的字符串.
我尝试了各种不同的数据类型,但似乎都没有:LPSTR,LPCSTR,LPCTSTR和LPCWSTR.不可否认,我没有尝试过char*.此外,一旦设置了一个方法来返回一个字符串,它是否需要.NET作为特定数据类型进行编组,还是可以直接读入System.String对象?我已经尝试解析为IntPtr然后转换为字符串,但这不起作用.
我在一个黑色的窗口上有一些静态文本,我想在运行时使用颜色选择器对话框更改它。我已经成功获取了颜色,现在我只需要更改文本即可!我已经读过该WM_CTLCOLORSTATIC
消息是要处理的消息,尽管这似乎仅适用于最初将控件绘制到屏幕上的情况。能否WM_PAINT
使用?
到目前为止,我设置颜色的代码是(WM_CTLCOLORSTATIC
以防万一):
if ((HWND)lParam == GetDlgItem(hWnd, uLabelId)
{
SetBkMode((HDC)wParam, TRANSPARENT);
SetTextColor((HDC)wParam, crLabelTextColour);
return (BOOL)CreateSolidBrush(GetSysColor(COLOR_MENU));
}
Run Code Online (Sandbox Code Playgroud)
在处理这个问题时,我可能完全搞错了,所以任何帮助都将不胜感激!
我试图在Win32中使用简单的文件IO.到目前为止,写入工作正常,但读取不是:尽管它成功读取了内容,但附加的"垃圾"会附加到字符串中.我到目前为止的代码如下.该计划已UNICODE
定义.
写作:
DWORD dwTextSize = GetWindowTextLength(hWndTextBox);
WCHAR *lpszText = new WCHAR[dwTextSize];
GetWindowText(hWndTextBox, lpszText, dwTextSize + 1);
hTextFile = CreateFile(lpszTextFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwBytesWritten;
WriteFile(hTextFile, lpszText, 2 * dwTextSize, &dwBytesWritten, NULL); // x2 for 2 bytes per Unicode character
CloseHandle(hTextFile);
DeleteObject(hTextFile);
Run Code Online (Sandbox Code Playgroud)
对于此示例,Hello, World!
已成功保存为Hello, World!
.
阅读:
lpszTextFileName = L"text.txt"; // LPCTSTR Variable
hTextFile = CreateFile(lpszTextFileName, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwFileSize = GetFileSize(hTextFile, &dwFileSize);
DWORD dwBytesRead;
WCHAR *lpszText = new …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个将返回int的C函数,但在此过程中将填充作为变量传入的char*.我正在尝试的一个基本示例是:
int myMethod(int input, char* output, int outMaxLen) {
int outValue = input * 5;
if (out < 10) strcat(output, "A small number");
else if (out < 20) strcat(output, "A medium number");
else strcat(output, "A large number");
}
Run Code Online (Sandbox Code Playgroud)
在main.c中:
char* myMethodOutput;
int myMethodInt = myMethod(2, myMethodOutput, 15);
printf("%d %s", myMethodInt, myMethodOutput);
Run Code Online (Sandbox Code Playgroud)
运行时,整数显示在屏幕上,但文本不显示.
outMaxLen变量用于检查char*参数以确保它足够大以容纳输出字符串.
和strcat()一样,我尝试过strcpy()和strncpy(),但都无济于事.strcat()不向控制台显示任何文本,strcpy()和strncpy()使用消息EXC_BAD_ACCESS调用调试器.
我已经使用strcpy_s函数在Windows API中成功地管理了这个,但我现在正在尝试UNIX框.我可能错过了一些非常基本的东西!