gpt4 book ai didi

c++ - 解析终端参数 Qt Mac OS X

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:28 26 4
gpt4 key购买 nike

我有一个简单的文本编辑器,当从系统文件管理器中双击它时,我想在其中打开一个文件。

我在 Ubuntu Linux (13.04) 下成功地做到了这一点,但在 Mac OS X 中我的代码无法运行。

经过一番研究,我发现您需要在终端中添加 --args 参数,以便将参数解析到 main()

我修复了我的代码,现在我的应用程序包可以从终端打开文件,但是当我在 Finder 中双击一个文件(并选择我的应用程序)时,我的应用程序启动时好像没有收到任何终端参数(创建一个新的文件)。

这是 main() 函数的代码:

int main(int argc, char *argv[])
{
QApplication MyApp(argc, argv);

Textpad.setApplicationName("MyApp");
Textpad.setApplicationVersion("0.7.2");

Textpad.setWindowIcon(QIcon(":/app-icon/48x48/icon.png"));

MainWindow *Window = new MainWindow();

QString Arguments;
QString FileLocation;

if (argc != 1) {
int i;
for (i = 0; i < argc; i++)
Arguments = argv[i];

// Check if the OS is Mac OS X (Mac OS X is 3)
if (Window->CheckOS() == 3)
// Remove the "--args" so that we don't confuse it with the file location
Arguments.replace("--args", "");

if (Arguments == "--help") {
// Show help
}

// Create a new file when Textpad is launched normally (under Linux)
if (Arguments == "%U") {
FileLocation.clear();
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}

else {
FileLocation = Arguments;
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}
}

else {
// Create new file
FileLocation.clear();
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}

return MyApp.exec();
}

正如我之前所说,当我编写以下内容时,我的应用程序可以毫无问题地从终端打开文件:

open MyApp.app --args <location of my file>

但当我尝试从 Finder 打开文件时失败。

我错过了什么?

提前谢谢你。

最佳答案

首先,您必须链接到 OX-X 框架。 OSX 使用类似于信号槽的事件。文件名也将由苹果事件给出。我很久以前用另一种语言遇到过这个,但我仍然找到了一个引用:

现在在 Qt 存档中编辑文档: https://doc.qt.io/archives/qq/qq12-mac-events.html

关于c++ - 解析终端参数 Qt Mac OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17562844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com