小编The*_*ght的帖子

Swift交叉编译为单个linux二进制文件

是否可以从OS X计算机编译swift二进制文件,以便它在运行Linux的服务器上作为单个二进制文件运行,而不需要动态链接的额外库?

我正在考虑将一个传递-target给swift命令并传递另一个参数以使其静态链接所有依赖项,但我不确定具体命令是什么.

确切的价值-target似乎相当难以捉摸.

我是否需要知道确切的目标分布才能将正确的字符串传递给-target参数?

linux macos cross-compiling swift

20
推荐指数
1
解决办法
1895
查看次数

桌面程序的"传统Qt"或"Qt Quick"?

诺基亚刚刚在Qt的最新beta版本中推出了Qt Quick(在声明中使用CSS/HTML构建UI),查看这个示例页面,它可以构建精美的现代UI,非常酷!

相反,由'传统Qt'开发的UI似乎不那么花哨(我可能错了,请参阅下面的免责声明).

所以我的问题是,您是否会将"Traditional Qt"或"Qt Quick"用于新的桌面程序?为什么?

我最初的想法:

'传统Qt':

优点:

  • 使用的整体技术更少,更简单,如果你使用PySide,你只用Python编写代码,不必乱用Qt Quick中类似CSS/JS的东西;

  • 它比较成熟.

    缺点:

  • 建立花哨的UI似乎更难?

'Qt Quick':

优点和缺点:反过来.

Edit:Qt Quick有一个缺点,纠正我,如果我错了,你不能以所见即所得的方式设计Qt Quick UI,对吧?

免责声明:我是Qt,PySide和Python的新手,最近才开始使用这些技术来构建桌面程序.

qt qt4 qt-quick

16
推荐指数
1
解决办法
7553
查看次数

使用Swift和Qt

我们可以很容易地在Qt中使用Objective-C和C++.

观看了Apple的许多WWDC 2015演讲,我预计Swift将取代OS-X(和iOS)开发的Objective-C; 所有的演示都使用了Swift.

考虑到你可以一起使用Objective-C和Swift,使用桥接头,是否可以在Qt项目中编译Swift代码并使用C++访问Swifts的第一类对象(Classes,Structs,Enums等)?


如果有可能...

从Qt调用Objective-C函数需要将代码包装在C函数中,并从Qt调用C头.

从Objective-C调用Swift需要一个桥接头来表示哪些Swift文件可用.然后在XCode项目中引用此标头; 我们可以在Qt .pro中做到这一点,如果是这样,怎么样?

假设我们可以指定桥接头,我们仍然只能从Objective-C文件调用Swift,但是可以直接从Qt中调用Swift,在C++中?

c++ macos qt swift

15
推荐指数
1
解决办法
6214
查看次数

在布局中设置QLabel上的文本不会调整大小

在Qt创建器中使用设计器我创建了一个对话框,其中包含垂直布局中的各种小部件.其中一个小部件是QLabel,其中自动换行设置为true.QLabel的文本在对话框显示之前设置.

QLabel的最大宽度和高度为16777215,垂直尺寸策略设置为" 扩展",水平线为" 首选".我已经尝试过更改大小政策.

我遇到的问题是,如果文本很大,QLabel无法相应调整,文本被剪裁,如下所示: -

在此输入图像描述

我尝试在设置文本后调用updateGeometry(),并尝试在垂直布局上调用update,但似乎没有任何区别.理想情况下,我希望QLabel垂直调整以适应文本.

谁能告诉我我在这里失踪了什么?

c++ layout qt qt-creator qlayout

14
推荐指数
2
解决办法
2万
查看次数

如何从文本编辑QT获取整个文本

我试图从文本编辑中获取文本并将其存储在QString中.

当我写这个

QString text = ui->textEdit->toPlainText();
Run Code Online (Sandbox Code Playgroud)

它只读取第一个'\n'之前的文本.那么如何才能得到整个文本中的'\n'.

这是从这样的插槽调用: -

void MainWindow::on_pushButton_clicked() 
{ 
    QString text = ui->textEdit->toPlainText(); 
    ui->label_2->setText(text); 
}
Run Code Online (Sandbox Code Playgroud)

c++ user-interface qt

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

Qt的默认线程

当我使用最少量的代码启动一个新的Qt应用程序并运行它时,我看到有许多线程正在运行,其中至少为2并且可以多达5个.它通常在2处结束,直到我拖动窗口,此时我看到最多4个线程在运行.

这是我正在使用的所有代码: -

#include <QApplication>
#include <QWidget>

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

    QWidget mainWindow;
    mainWindow.show();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么有不同的线程以及它们可能是什么?最初我只期望一个,但如果用一秒钟处理消息就不会感到惊讶.但是,什么可以解释其他线程?

c++ macos qt

12
推荐指数
1
解决办法
928
查看次数

QListWidget 对齐项目

我用一些项目创建 QListWidget。

QHBoxLayout* h_layout = new QHBoxLayout;
    h_layout->setMargin( 0 );
    menu_list_widget_  = new QListWidget;
    menu_list_widget_->setFlow(QListView::TopToBottom);
    menu_list_widget_->setViewMode(QListView::IconMode);
    menu_list_widget_->setMovement(QListView::Static);
    menu_list_widget_->setFixedWidth( 100 );

    QListWidgetItem* lwi;
    menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/color_pencils.png"), "?????") );
    lwi->setTextAlignment(Qt::AlignCenter);
    menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/font.png"), "?????") );
    lwi->setTextAlignment(Qt::AlignCenter);
    lwi->setHidden( true );
// etc
    h_layout->addWidget(menu_list_widget_, 0, Qt::AlignHCenter)
Run Code Online (Sandbox Code Playgroud)

但是项目没有居中对齐

在此处输入图片说明

为什么?

qt

7
推荐指数
1
解决办法
8290
查看次数

通过Lambda和递归函数调用了解QTimer

我有以下代码:

void class::Testfunc()
{
    QTimer* timer = new QTimer;
    QObject::connect(timer, &QTimer::timeout, [this](){
        emit Log("Time out...");
        TestFunc(serverAddress, requestsFolderPath);
       // deleteLater(); //*** why does this crash if used to replace the connect below?
    });
    connect(timer, &QTimer::timeout, timer, &QTimer::deleteLater);
    timer->setSingleShot(true);
    timer->start(1000);
}
Run Code Online (Sandbox Code Playgroud)

创建一个单击计时器,其时间连接到lambda函数,该函数每秒记录lambda函数的入口(将文本打印到stdout)并再次调用该函数.

这没有问题.但是,如果我删除对deleteLater的连接调用(在lambda函数下面),但在lambda函数中启用deleteLater调用,则该函数将失败.它打印一次,不久之后,在尝试删除计时器对象时崩溃.

这个实例中两个deleteLater调用之间的区别是什么以及为什么将deleteLater放在lambda函数中会导致问题,而创建一个单独的连接按预期工作,即使两个都调用deleteLater以响应Timer的超时信号?

c++ lambda qt c++11 qtcore

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

检测正在运行的应用程序是否被沙箱化

给定应用程序的 pid,是否有任何方法以编程方式检测该应用程序是否在 OSX 沙箱环境中运行?

理想情况下,我想知道某个地方是否有 API 调用,最好是用 C,而不是 Objective-C(对于守护进程,所以不使用 Cocoa),但如果没有,还有其他检查方法吗?

c macos sandbox objective-c core-foundation

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

与小牛队在Qt中的Objective-C

我一直在Qt中使用Objective-C与C++混合而没有任何问题; 在需要时使用.mm文件.

在将我的构建机器升级到Mavericks之后,我最初注意到框架头文件丢失了,因此安装了XCode命令行工具,修复了这个问题.

现在,我在编译Objective-C文件时遇到问题,错误抱怨框架中的代码.例如: -

系统/库/框架/ Foundation.framework/Versions/C/Headers/NSUserNotification.h:16:44:错误:在枚举器之间缺少','NSUserNotificationActivationTypeReplied NS_AVAILABLE(10_9,NA)= 3

/System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h:58:34:错误:预期';' 在顶级声明符之后typedef NSInteger NSModalResponse NS_AVAILABLE_MAC(10_9);

我已升级到Qt 5.2.1,但问题仍然存在,而且它来自包括标准框架标题; 在这种情况下: -

#import <NSUserNotification.h>
#import <NSApplication.h>
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下小牛队的变化以及如何解决这些错误吗?

c++ macos qt objective-c osx-mavericks

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