小编uli*_*tko的帖子

包含Qt标头的正确方法是什么?

到目前为止,我知道几种#includeQt类的方法:

  • #include <QtModule>

    例如QDomDocument,这带来了特定模块的所有类QDomElement,QDomNode以及来自的许多其他类#include <QtXml>.

  • #include <QClassName>

    这增加了一个特定的类,可能想要使用,例如声明QEvent,QStringList,QFile.

  • #include <qcstyleheader.h>

    这具有前一方法的效果,除了不同的标题名称.

所以我想知道,#includeQt课还有其他方法吗?它们是否相同,或者由于某些原因,它们中的一些是否优先于其他人?这取决于#include内部.cpp还是.h文件?这会影响可执行文件的编译速度和大小吗?

简而言之,最好的方法是什么?

c++ qt qt4

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

为什么我在Scheme中的合并排序实现如此之慢?

我知道Racket的stdlib,但我想自己实现一个排序功能作为练习.我决定使用合并排序算法,因为它在递归术语中自然定义.很快我就提出了工作代码,但它运行得太慢了.在我看来,运行时间是列表大小的指数,虽然理论上它应该是O(n·log n).

这是我的代码:

#lang racket

(define (pair x y) (list x y))

(define (split input) (cond [(empty? input) (pair null null)] [(empty? (rest input)) (pair input null)] [else (let [(tail (cddr input))] (pair (cons (first input) (first (split tail))) (cons (second input) (second (split tail)))))]))

(define (merge input1 input2) (if (ormap empty? (list input1 input2)) (append input1 input2) (if (< (first input1) (first input2)) (cons (first input1) (merge (rest input1) input2)) (cons (first input2) …

lisp sorting performance scheme racket

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

以编程方式在Qt中设置QLabel的像素图

我们用来显示图片的Widget是QLabel.我们可以通过设置pixmap属性直接从QtCreator中完成.

我们应该首先创建一个资源文件,然后将该图像添加到该资源文件中.要创建Qt资源文件,我们转到菜单:File> Qt> Qt Resource File.

我们可以使用Qt Creator设置QLabel的图像...

但我想根据用户的一些输入改变图片

我试着做以下事情:

#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    QPixmap * mypix = new QPixmap(":/karim/test.png");
    ui->label->setPixmap(mypix);
    delete mypix;
}
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误

..\Project\form.cpp: In constructor 'Form::Form(QWidget*)':

..\Project\form.cpp:12: error: no matching function for call to 'QLabel::setPixmap(QPixmap*&)'

c:\QtSDK\Simulator\Qt\mingw\include/QtGui/qlabel.h:123: note: candidates are: void QLabel::setPixmap(const QPixmap&)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢 ?

c++ qt

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

GTK + gio没有这样的文件或目录

我正在使用VC++ 2008,我的代码是:

#include <gtk/gtk.h>

int main( int argc, char *argv[])
{
  GtkWidget *window;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_widget_show(window);

  gtk_main();

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

在每个编译器中我得到相同的错误:gio/gio.h:没有这样的文件或目录.

我添加了这个库:gtk-win32-2.0.lib gdk-win32-2.0.lib gailutil.lib

我还可以做些什么?

编辑:我添加了包括和箱子.错误发生在gdkapplaunchcontext.h>第30行> #include

c++ gtk

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

签了两个补码算术

我在考虑数据类型范围,出现了一个问题.我们知道签名char的范围是从-128到127.我得到了127的结果,即0111111 = +127

但我无法得到-128如何来?如果我们只是ON符号位,我们得到11111111,它是如何等于-128?

c types

5
推荐指数
2
解决办法
6017
查看次数

显示亚洲字符(使用Unicode):在RichEdit控件中显示时与使用ExtTextOut相比,字符间距有所不同

这张照片说明了我的困境:

图片1

所有字符看起来都一样大小,但是在RichEdit控件中显示时,与我使用ExtTextOut时相比,它们之间的间距是不同的。

我想呈现与RichEdit控件中相同的字符(理想情况下),以保留换行位置。

谁能告诉我:

a)哪个更正确的表示形式?

b)为什么RichEdit控件显示的文本在亚洲字符之间没有空格?

c)有什么方法可以使ExtTextOut在绘制这些字符时重现RichEdit控件的行为?

d)如果我正在使用亚洲版本的Windows,这会有什么不同吗?

也许我很乐观,但是如果有人可以提供任何提示,我将非常感兴趣。

如果有帮助:

这是我的文字:

???????????1 2 3 4 5 6 7 8 9 0
Run Code Online (Sandbox Code Playgroud)

向亚洲读者表示歉意,这只是为了测试我们的Unicode实现,我什至不知道字符取自哪种语言,更不用说它们是否意味着任何意义了

为了通过将这些字符粘贴到RichEdit控件(例如,写字板)中来查看效果,您可能会发现必须滑动它们并将字体设置为“ Arial”。

我获得的富文本为:

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang2057 {\ fonttbl {\ f0 \ fnil \ fcharset0 Arial;}} {\ colortbl; \ red0 \ green0 \ blue0;} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ fs22 \ u24555?\ u30340?\ u26837?\ u33394?\ u29392?\ u29432?\ u36339?\ …

windows unicode rtf richedit textout

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

如何在语法中编写类似Python的缩进语言?

我正在编写一个带有类似Python的内置语言的工具.我想在语法中使缩进有意义(因此行开头的制表符和空格将表示命令的嵌套).

做这个的最好方式是什么?

我以前写过递归下降和有限自动机解析器.

parsing

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

使用字符串文字初始化非const参数

所以我有这个代码:

class ConstTest {
public:
    explicit ConstTest(char* name) {}
};

int main() {
    ConstTest t("blarghgh");
}
Run Code Online (Sandbox Code Playgroud)

它显然是编译,即使我认为它不应该.由于C++中的字符串文字具有类型const char[],而ConstTest构造函数需要const-less char*- not const char*.并且const通过C++隐式地执行指向非常量指针的指针.

那么,我哪里错了?为什么要编译?我可以合法地修改构造函数中的解除引用指针吗?!

c++ const-correctness

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

HXT:在 Haskell 中使用 HXT 按位置选择节点?

我正在尝试使用 Haskell 解析一些 XML 文件。对于这项工作,我使用HXT来获取有关实际应用中箭头的一些知识。所以我对箭头主题很陌生。

在 XPath (和HaXml)中,可以按位置选择节点,例如:/root/a[2]/b

即使在一遍又一遍地阅读文档之后,我也无法弄清楚如何使用 HXT 做类似的事情。

这是我正在使用的一些示例代码:

module Main where

import Text.XML.HXT.Core

testXml :: String
testXml = unlines
    [ "<?xml version=\"1.0\"?>"
    , "<root>"
    , "    <a>"
    , "        <b>first element</b>"
    , "        <b>second element</b>"
    , "    </a>"
    , "    <a>"
    , "        <b>third element</b>"
    , "    </a>"
    , "    <a>"
    , "        <b>fourth element</b>"
    , "        <b>enough...</b>"
    , "    </a>"
    , "</root>"
    ]

selector :: ArrowXml a => a XmlTree …
Run Code Online (Sandbox Code Playgroud)

haskell arrows hxt

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

无法计算解析器的最小长度 - 在Haskell中使用uu-parsinglib

让我们看看代码片段:

pSegmentBegin p i   = pIndentExact i *> ((:) <$> p i <*> ((pEOL *> pSegment p i) <|> pure []))
Run Code Online (Sandbox Code Playgroud)

如果我在我的解析器中将此代码更改为:

pSegmentBegin p i   = do
    pIndentExact i
    ((:) <$> p i <*> ((pEOL *> pSegment p i) <|> pure []))
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

canot compute minmal length of a parser due to occurrence of a moadic bind, use addLength to override
Run Code Online (Sandbox Code Playgroud)

我认为上面的解析器应该以相同的方式运行.为什么会出现此错误?

编辑

上面的例子很简单(为了简化问题),如下所述,这里没有必要使用do notation,但我希望它使用的实际情况如下:

pSegmentBegin p i   = do
    j <- pIndentAtLast i
    (:) <$> p j <*> ((pEOL …
Run Code Online (Sandbox Code Playgroud)

parsing haskell parsec parser-combinators uu-parsinglib

5
推荐指数
2
解决办法
344
查看次数