小编And*_*nko的帖子

在Flutter本地干净地覆盖主题的各个部分

我有一个小部件,有两个TextFields作为后代.我想将相同的样式应用于这些TextField.我的理解是,正确的方法是将本地化主题应用于我的小部件树.以下是我的尝试.这是我的根小部件build功能的代码片段.有没有更清洁的方法来做到这一点?

final ThemeData _themeData = Theme.of(context);
return Theme( // HACK
  data: _themeData.copyWith(
    inputDecorationTheme: InputDecorationTheme(
      border: OutlineInputBorder(),
    ),
    textTheme: _themeData.textTheme.copyWith(
      subhead: _themeData.textTheme.subhead.copyWith(
        fontSize: 30.0,
      ),
    ),
  ),
  child: _buildTheRestOfMyWidgetTree(context),
);
Run Code Online (Sandbox Code Playgroud)

我烦恼的是,为了覆盖单个属性(_themeData.textTheme.subhead.fontSize),我必须显式地和手动地复制三个中间数据结构(_themeData然后_themeData.textTheme,然后_themeData.textTheme.subhead).

flutter

14
推荐指数
1
解决办法
1307
查看次数

使用带有非Qt线程的Qt信号/插槽

我做了尽职调查但找不到这个问题的答案:

Qt信号/插槽机制如何与非Qt线程交互?

特别是,从非Qt(例如TBB)线程发出信号是否可以安全地被主事件循环中的插槽捕获?假设我明确地将它与排队连接连接?(我的感觉是指定连接排队是强制性的;这是正确的吗?)

(作为一个附带问题,我一直在假设Qt同步类,例如QMutex,跨非Qt线程工作.这是正确的吗?)

(作为一个澄清的评论,我担心的是排队的连接机制不会使用保护,例如互斥,如果它没有检测到信号是从哪个发出的,那么将metacall添加到主线程事件队列一个不同的Qt线程.)

(最后补充:我可以相信,因为Qt机制是根据特定于平台的原语实现的,实际上我尝试做的所有事情都会优雅地工作,但我也想知道Qt是否提供任何保证这些东西能起作用.)

c++ qt multithreading

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

在Qt中将原始OpenGL渲染为QML UI的两种方法的比较

根据这篇文章,有两种主要的方法可以将原始OpenGL渲染成一个应用程序,其UI由QtQuick的场景图管理.简而言之,他们(根据我的理解):

  • 在手写代码中调用原始OpenGL方法,该代码通过QtQuick公开的一些API连接到场景图的渲染循环中.
  • 将场景的原始OpenGL部分渲染为QQuickFramebufferObject,它被视为场景图中的一个组件,并且自身呈现为纹理.

这两种方法有哪些优点/缺点?

opengl qt qml qt-quick

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

在哪里放Qt QML非可视应用程序组件

(我正在使用Qt 5,QtQuick 2,带控件.)

我正在编写我的第一个QML应用程序,并希望保持模块化和相对较小的文件长度.

有些东西大批量出现,我想收集到帮助文件中,但我不确定这样做的正确方法.

我到目前为止遇到的两个例子是FontLoaderAction.

在我的特殊情况下,我将在我的整个应用程序中使用6种字体,所以我想尽早加载它们,而不必再担心它.我的问题是,我应该把它放在哪里FontLoader

一种选择是将它们放在main.qml某个地方,但这对我来说感觉有点混乱.我所做的是创建了一个文件FontLoaders.qml,其中包含:

Item {
    width: 0; height: 0
    FontLoader {
        name: "myFont1"
        source: "/fonts/myFont1.ttf"
    }
    FontLoader {
        name: "myFont2"
        source: "/fonts/myFont2.ttf"
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,在main.qml某个地方,我只有一个FontLoaders {}.

我的另一个例子是Action.我有一大堆Actions,我希望在应用程序范围内或多或少可见.我有一个AppMenuBar组件,这似乎是放置Actions 的自然场所,但这基本上是定义菜单栏的QML文件大小的两倍,从逻辑上讲,这两个可以分开.(许多操作都可以通过菜单栏和应用程序中的其他按钮访问.)

我已基本上工作的"解决方案",但他们对我(特别是FontLoaders)感到邋,,我想知道是否有一些更清洁的方法来做到这一点,我还没有想到.

qt qml qt-quick

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

在Dart中,将动态转换为给定类型或返回null的语法上不错的方法吗?

我有一个dynamic x,我想分配xT sif x is T,否则要分配nulls。具体来说,我想避免必须键入x两次,并避免创建临时目录。(例如,我不想String s = map['key'] is String ? map['key'] : null;一遍又一遍地写,因为我将有很多这样的表达式。)我不希望有任何运行时错误的可能性。

以下作品:

class Cast<T> {
  T f(x) {
    if (x is T) {
      return x;
    } else {
      return null;
    }
  }
}

// ...

dynamic x = something();
String s = Cast<String>().f(x);
Run Code Online (Sandbox Code Playgroud)

有没有一种语法上更好的方法可以做到这一点?

dart

5
推荐指数
6
解决办法
1614
查看次数

使用const bool参考进行后台任务取消跟踪?(C++)

我有一个桌面应用程序,当用户请求时,某些计算在后台线程中运行.有一个取消按钮.

我知道向后台任务发信号取消的"安全"或"正确"方式(使用Qt信号/插槽连接,后台任务轮询的互斥锁定布尔值等).

但是,最简单的事情似乎是bool cancelled在我的主线程类中有一个,它在按下取消按钮时同步设置,并传递const bool &cancelled给它轮询的后台线程.

这种方法有可能适得其反吗?

c++ multithreading asynchronous

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

标签 统计

qt ×3

c++ ×2

multithreading ×2

qml ×2

qt-quick ×2

asynchronous ×1

dart ×1

flutter ×1

opengl ×1