小编jkj*_*uio的帖子

为什么这个涉及重载运算符和隐式转换的C++表达式不明确?

operator bool打破了operator<以下示例中的使用.任何人都可以解释为什么bool仅仅是在为相关if (a < 0)表达的具体操作者,是否有解决方法吗?

struct Foo {
    Foo() {}
    Foo(int x) {}

    operator bool() const { return false; }

    friend bool operator<(const Foo& a, const Foo& b) {
        return true;
    }
};

int main() {
    Foo a, b;
    if (a < 0) {
        a = 0;
    }
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到:

g++ foo.cpp
foo.cpp: In function 'int main()':
foo.cpp:18:11: error: ambiguous overload for 'operator<' (operand types are 'Foo' and 'int')
     if (a …
Run Code Online (Sandbox Code Playgroud)

c++ operators type-conversion ambiguous

18
推荐指数
2
解决办法
2152
查看次数

Qt5没有安装QML模块

我对Qt QML中的模块感到困惑.我已经阅读了所有的文档,但它没有说明一些基本的想法.

我知道我可以将一堆QML文件放入一个目录中并添加一个qmldir文件来描述一个已识别的模块.当我这样做并调整QML_IMPORT_PATH时,QtCreator很高兴并停止强调导入ModuleName 1.0行.

所以创作者很高兴,但它不起作用.我没有安装模块.我的问题是:

  • "安装"是什么意思.我有文件目录,但我没有在任何地方"安装"它们.
  • 我应该构建/编译模块来制作DLL/.so吗?
  • 模块QML文件是否进入主应用程序的资源,否则它们在哪里可以找到?
  • 我的main.qml文件是应用程序资源的一部分,应用程序如何在运行时找到模块的资源.

对不起,对于所有这些问题,但这些模块的基础知识还不清楚.我不明白"模块"是仅仅是文件共享还是编译单元.

谢谢你的帮助.

qt qml qt5

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

Qt5 QML,何时使用ColumnLayout vs Column?

例如,这有效:

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.2

ApplicationWindow
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    function thingWidth()
    {
        return width*80/100
    }

    Column
    {
        spacing: 10;
        anchors.horizontalCenter: parent.horizontalCenter

        Thing { color: "red"; width: thingWidth(); }
        Thing { color: "yellow"; width: thingWidth();  }
        Thing { color: "green"; width: thingWidth();  }
    }

}
Run Code Online (Sandbox Code Playgroud)

Column改为ColumnLayout,它没有(调整窗口大小会导致布局出错).

任何帮助,谢谢.

编辑1:

这也是Thing.qml按要求,

import QtQuick 2.0

Item {
    property alias color: rectangle.color
    width: 50; …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5

11
推荐指数
1
解决办法
6864
查看次数

如何使用windows/cygwin从CMakeLists.txt中切换Clion中的GCC和Clang

我放

 set(CMAKE_CXX_COMPILER           "/usr/bin/clang.exe")
Run Code Online (Sandbox Code Playgroud)

运行/清洁,运行/构建.

我收到链接错误,如:

undefined reference to `std::ios_base::Init::~Init()'
: undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)

据推测,还有其他变量需要改变.尝试添加-lstdc++CMAKE_CXX_FLAGS,但没有什么不同.

例如,是否存在CLion方式而不是CMake方式?

谢谢.

c++ gcc clang clion

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

为什么Android CollapsingToolbarLayout + NestedScrollView在显示软键盘时不滚动到End

使用appcompat 23.1.1,当显示软键盘时,无法滚动到NestedScrollView内的EditText的末尾.如果键盘被隐藏,它将滚动到最终结果.

换句话说,软键盘隐藏了文本的最后部分.

已经问过这个问题的变化,没有明确的答案.大多数人都认为appcompat 22.x是错误的.这已修复为23.1?如果没有,现在是否有更好的解决方法.

要重现此问题,只需创建使用Android Studio,创建一个新项目并选择"滚动应用程序",然后将TextView更改为EditText.

我尝试添加到清单,

 android:windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别.

作为参考,这里是项目文件:

https://gist.github.com/anonymous/73acc2d39f4e90c51217

感谢您的任何帮助和建议

编辑#1

appcompat-v7:23.2.0仍然如此

编辑#2

仍然存在appcompat 23.3.0可能是一个错误.请参阅此处, https://code.google.com/p/android/issues/detail?id = 182362

android android-collapsingtoolbarlayout nestedscrollview

9
推荐指数
1
解决办法
1668
查看次数

Clion如何将文件添加到项目中

这看起来非常基本.如何在不必手动编辑的情况下将文件添加到项目中CMakeLists.txt.

例如,另一个目录中的源文件

cmake clion

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

Qt 5.7 QML为什么我的CheckBox属性绑定消失了?

我有一个简单的CheckBoxes 列表,一周中的每一天.它们取决于days使用掩码的整数值,每个都是1位CheckBox.

days使用"全部清除"按钮或"全部设置"按钮分配两者都可以正常工作并更新.但是,一旦单击任何框,它们就不再响应依赖属性的更改days.

为什么是这样?他们在某种程度上变得没有约束力.如果是这样,我应该手动重新绑定它们,如果是这样,为什么?

这是代码,

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3

ApplicationWindow
{
    visible: true
    width: 800
    height: 400

    property int days: 0

    ColumnLayout
    {
        Repeater
        {
            model: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
            CheckBox
            {
                text: modelData
                checked: (days & (1<<index)) != false
                onClicked:
                {
                    if (checked) days |= (1<<index);
                    else days &= ~(1<<index);
                }

            }
        }

        Button 
        {
            text: "clear all"
            onClicked: days = 0 …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquickcontrols

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

Qt5.7 qmake; “系统找不到指定的路径”是什么意思 意思是如何解决?

Qt5.7/mingw/windows8.1 qmake。新安装。当我在项目文件上运行 qmake 时,我收到上述错误消息,尽管生成文件已发出,但它们会构建并且项目可以运行(看起来)。

从命令行运行 qmake;这是我添加到 PATH 的路径:

I:\Qtmg\Qt5.7.0\5.7\mingw53_32\bin;i:\Qtmg\Qt5.7.0\Tools\mingw530_32\bin;I:\Qtmg\Qt5.7.0\Tools\QtCreator\bin

这与配置文件或缓存有关吗?如果是这样,这些会在哪里。还有qmake需要的任何其他外部状态。

谢谢。

编辑#1 这里是项目文件:

TEMPLATE = app

QT += qml quick quickcontrols2
CONFIG += console

SOURCES += main.cpp

RESOURCES += qml.qrc
Run Code Online (Sandbox Code Playgroud)

编辑 #2:来自 QtCreator 4.0.2 的输出

一般消息选项卡:

The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system …
Run Code Online (Sandbox Code Playgroud)

qt qmake qt5.7

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

QT QML 如何将 LinearGradient 添加到带边框的矩形?

我想要一个比默认垂直渐变更具体的渐变Rectangle。我尝试添加 aLinearGradient以实现对角线效果,但它会覆盖边框。

考虑这个例子。顶部Rectangle有垂直渐变和边框。底部Rectangle渐变覆盖边框和radius。我尝试过clipgradient: LinearGradient但它们也不起作用。

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0

ApplicationWindow
{
    visible: true
    width: 640
    height: 480

    Column
    {
        spacing: 20
        width: parent.width
        Rectangle 
        {
            width: 200
            height: 200

            border.width: 4
            border.color: "#888"
            radius: 10

            // adds a vertical gradient to button
            gradient: Gradient
            {
                GradientStop 
                {
                    position: 0
                    color: "#eee"
                }
                GradientStop
                {
                    position: 1
                    color: "#ccc"
                } …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

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

为什么我不能用C++中的单个char构造一个std :: string?

std::string从a 做一个char.例如,不会编译,

#include <string>

int main()
{
    char c = 'a';
    std::string s(c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在g ++中,我得到了这么多错误,

foo.cpp: In function 'int main()':
foo.cpp:6:20: error: no matching function for call to 'std::__cxx11::basic_strin
g<char>::basic_string(char&)'
     std::string s(c);
                    ^
In file included from i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/in
clude/c++/string:52:0,
                 from foo.cpp:1:
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:535:9: note: candidate: template<class _InputIterator> std::__cxx11::bas
ic_string<_CharT, _Traits, _Alloc>::basic_string(_InputIterator, _InputIterator,
 const _Alloc&)
         basic_string(_InputIterator __beg, _InputIterator __end,
         ^
i:/Qtandroid/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/basic_s
tring.h:535:9: note:   template argument deduction/substitution failed:
foo.cpp:6:20: note:   candidate expects 3 arguments, …
Run Code Online (Sandbox Code Playgroud)

c++ stdstring c++11

3
推荐指数
3
解决办法
1460
查看次数

qt qml。MouseArea可以看到事件,但是将所有事件都传递给父对象而不影响它们吗?

内部人员首先MouseArea获取鼠标事件。我想“看到”这些事件,以便设置各种属性,但不影响它们。我希望将鼠标事件传播到任何父对象MouseArea

考虑一下此代码。我想单击蓝色方块以查看“蓝色按下”和“蓝色释放”,以及传递给“父母按下”和“父母释放”。

如果我接受该事件,则家长不会得到它。如果我不接受按下,则看不到释放。

import QtQuick 2.7
import QtQuick.Controls 1.4

ApplicationWindow
{
    visible: true
    width: 800
    height: 1024

    Rectangle
    {
        anchors.fill: parent
        color: "yellow"

        MouseArea
        {
            // i want these to happen even when mouse events are in the
            // blue square
            anchors.fill: parent
            onPressed: console.log("parent pressed");
            onReleased: console.log("parent released");
        }

        Rectangle
        {
            x: 100
            y: 100
            width: 100
            height: 100
            color: "blue"

            // i would like to "see" events, but not affect them
            // i want …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

3
推荐指数
1
解决办法
5654
查看次数

禁用 SwipeRefreshLayout 拉刷新的正确方法是什么

我有一个使用 SwipeRefreshLayout 的 ListView。有用。但我并不总是希望拉动刷新动画或回调触发。

在我的例子中,pull to refresh 操作将视图与服务器同步,但可以选择禁用服务器同步作为首选项。当同步被禁用时,我根本不想拉到引用。

我目前正在做的是子类化 SwipeRefreshLayout 并在实际上不能但我不想要动画时将 `canChildScrollUp' 覆盖为“谎言”。

因此:

private class ListFragmentSwipeRefreshLayout extends SwipeRefreshLayout
{
    public ListFragmentSwipeRefreshLayout(Context context) { super(context); }

    @Override
    public boolean canChildScrollUp()
    {
        final ListView view = getListView();
        if (view.getVisibility() == View.VISIBLE)
            return !shouldShowRefresh(view);

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

其中`shouldShowRefresh'的实现考虑了它是否可以结合我的网络同步设置实际上滚动。

这种做法是有效的,但我问这个问题是因为这听起来像是一个常见的要求,并且将“canChildScrollUp”混为一谈是相当混乱的。

谢谢。

android swiperefreshlayout

2
推荐指数
1
解决办法
5245
查看次数

如何用鼠标选择TextEdit区域

我想用鼠标选择文本区域。

TextEdit {
        id: edit
        anchors.fill: parent
        font.pixelSize: 18
        focus: true
        wrapMode: TextEdit.Wrap
        text: "bla bla"
    }
Run Code Online (Sandbox Code Playgroud)

我可以用键盘选择,然后用鼠标单击以提供焦点,但是我不能用鼠标选择文本区域。

这可能吗。谢谢!

textedit qml qt5 qtquick2

2
推荐指数
1
解决办法
944
查看次数