我们即将致力于Qt和C++(叹气)进行一些跨平台开发.Qt 4.5的最新版本看起来非常好,QT Creator IDE虽然比其他IDE简单,但它是一个很好的入门方式.
我试图理解如何从"外部"世界拖放到QT小部件中.据我从文档中可以看出,您应该子类化您想要响应drop事件的窗口小部件,并覆盖该窗口小部件的某些方法(dragEnterEvent和dropEvent成员函数).
但是,如果我使用Qt Creator工具,我似乎无法访问使用GUI表单构建器创建的小部件类,因此我无法对它们进行子类化.
什么是秘密?
提前致谢
在下面的代码中,我修改了第一个LET语句,以便可以将中缀运算符写为前缀函数.我想对应用程序运算符<*>执行相同的操作但是无法对其进行编译.如果要将此运算符视为前缀函数,则放置此运算符的正确位置在哪里?
module Main(main) where
import Data.Functor
import Control.Applicative
main = do
let y = add <$> (Just 1) <*> (Just 2)
print y
-- Turn <$> into a prefix operator
let y = (<$>) add (Just 1) <*> (Just 2)
print y
--How do I turn <*> into a prefix operator
--???
add x y = x + y
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码,该代码来自我为帮助我学习Haskell而构建的工作示例.此代码将包含从Yahoo下载的股票报价的CSV文件解析为一个很好的简单条形列表,然后我可以使用它.
我的问题:如何编写一个函数,它将文件名作为参数并返回一个OHLCBarList,以便main中的前四行可以正确封装?
换句话说,我如何实现(没有得到关于IO东西的各种错误)类型的函数
getBarsFromFile :: Filename -> OHLCBarList
Run Code Online (Sandbox Code Playgroud)
以便在前四行主要工作中进行的咕噜声工作可以被适当地封装起来吗?
我自己试图这样做但是由于我有限的Haskell知识,我失败了.
import qualified Data.ByteString as BS
type Filename = String
getContentsOfFile :: Filename -> IO BS.ByteString
barParser :: Parser Bar
barParser = do
time <- timeParser
char ','
open <- double
char ','
high <- double
char ','
low <- double
char ','
close <- double
char ','
volume <- decimal
char ','
return $ Bar Bar1Day time open high low close volume
type OHLCBar = (UTCTime, Double, Double, Double, Double) …Run Code Online (Sandbox Code Playgroud) 我知道如何使用unpack将ByteString转换为String但我正在努力弄清楚如何将IO ByteString(这是我从HaskellNet中的fetchHeader函数返回的内容)转换为IO String.我基本上是想做这样的事情
getAllHeadersForMessageUID :: IMapConnection -> UID -> IO String
getAllHeadersForMessageUID connection uid = do
headers <- fetchHeader connection uid
return (headers >>= BS.unpack)
Run Code Online (Sandbox Code Playgroud)
错误消息对我没有意义
Couldn't match expected type ‘[BS.ByteString]’
with actual type ‘BS.ByteString’
In the first argument of ‘(>>=)’, namely ‘headers’
In the first argument of ‘return’, namely ‘(headers >>= BS.unpack)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会出现ByteString列表.
I'm feeling rather stupid - must be missing something silly --- I wanted to subclass the generic STL stack class so that I could extend it with a combined top followed by pop operation but my compiler is telling me that both top and pop are undeclared identifiers.
template <typename T>
class MyStack : public stack<T>
{
public:
T PopTop() // Convenience - combined top and pop in one go
{
T result = top();
pop();
return result;
}
}; …Run Code Online (Sandbox Code Playgroud) 我的理解是,如果我在lambda表达式中使用语法[&],那么我的lambda表达式可以访问函数的周围变量和参数.
因此,我尝试编写以下(简化)代码
if ( [&]()
{
bool b = false;
return b;
}
)
{
// Do something in TRUE part of if statement
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误"类型'的值'lambda at ...'不能在上下文中转换为'bool'
希望对此问题有所了解.
非常感谢,D