我在视图和QStandardItemModel之间有一个带有QSortFilterProxyModel的QTreeView来对树进行排序.然后我想通过clicked()信号对视图中的点击进行操作.
模型/视图的设置类似于:
mymodel = new QStandardItemModel(5, 5, this);
mysort = new MySortProxy(this);
mysort->setSourceModel(mymodel);
myview = new QTableView(this);
myview->setSourceModel(mysort);
connect(myview, SIGNAL(clicked(QModelIndex)), this, slot(clickAction(QModelIndex)));
Run Code Online (Sandbox Code Playgroud)
这个设置都可以按照我想要的方式对我的数据进行排序和排序.单击某个项目时,将调用clickAction()槽,并单击该项目的索引.然后我尝试从插槽中的索引中获取项目:
void myclass::clickAction(const QModelIndex &index)
{
QStandardItem *item = mymodel->itemFromIndex(index);
}
Run Code Online (Sandbox Code Playgroud)
但是,itemFromIndex返回NULL.
如果我删除了QSortFilterProxyModel并将模型直接设置为视图中的sourcemodel,那么一切都可以正常工作.即
myview->setSourceModel(mymodel); // was setSourceModel(mysort);
Run Code Online (Sandbox Code Playgroud)
mymodel-> itemFromIndex(index)现在按预期返回项目,但显然现在我无法使用自己的排序代理.
任何人都能告诉我我做错了什么以及当我有一个sortfilter代理时我如何在点击槽中获取该项目?
我正在使用Qt-4.3.1.
感谢您的帮助,Giles
在Git存储库中,是否可以将分支的选项卡完成添加到Powershell?例如:
PS> git checkout maTAB
会导致
PS> git checkout master
Run Code Online (Sandbox Code Playgroud) 这是我想要完成的事情 -
到目前为止,我现在需要一个所有子流程都可以访问的共享对象.我正在使用多处理模块中的队列.此外,所有子进程都需要将其输出写入单个文件.我想是一个使用Locks的潜在地方.在我运行时使用此设置,我没有得到任何错误(所以父进程看起来很好),它只是停止.当我按下ctrl-C时,我看到一个追溯(每个子过程一个).也没有输出写入输出文件.这是代码(请注意,没有多个进程,一切运行正常) -
import os
import glob
from multiprocessing import Process, Queue, Pool
data_file = open('out.txt', 'w+')
def worker(task_queue):
for file in iter(task_queue.get, 'STOP'):
data = mine_imdb_page(os.path.join(DATA_DIR, file))
if data:
data_file.write(repr(data)+'\n')
return
def main():
task_queue = Queue()
for file in glob.glob('*.csv'):
task_queue.put(file)
task_queue.put('STOP') # so that worker processes know when to stop
# this is the block of code that needs correction.
if multi_process:
# One way to spawn 4 processes
# pool = Pool(processes=4) …Run Code Online (Sandbox Code Playgroud) 我需要向包含1920x1080 png的浏览器发送html响应.这是一个html查询截图.
我在base64中对图像进行编码,并将其作为text/html内容类型嵌入.简单的东西:
<HTML><HEAD>Whatever</HEAD><BODY><img src="data:image/png;base64,data"/></BODY></HTML>
Run Code Online (Sandbox Code Playgroud)
它在FF和Chrome上工作正常,问题是我需要支持IE8.IE8作为数据长度的限制:uri.
如果我压缩图像使png编码低于32k(约600x500),我会丢失太多信息.
对于这个问题,最容易解决的是什么?(我无权访问服务器来托管图像等)
我一直在使用以下没有问题:
$("#tableid tr:even").addClass("evenClass");
Run Code Online (Sandbox Code Playgroud)
但是现在我的桌子上有一些隐藏的斑块条纹样式.我试过添加'is(":visible")'和类似的东西无济于事.有任何想法吗?
我正在编写一个需要与服务器通信的node.js应用程序.它使用以下代码建立http连接:
var client = http.createClient(u.port, u.hostname, u.secure);
client.on("error", function(exception) {
logger.error("error from client");
});
var request = client.request(method, u.path, headers);
Run Code Online (Sandbox Code Playgroud)
我没有在node.js文档中看到任何用于在连接上设置超时的选项,默认情况下它似乎设置为20秒.我遇到的问题是我在中国的用户似乎是一个缓慢或片状的网络,他们有时会遇到连接到美国数据中心的超时.我想将超时时间增加到1分钟,看看是否能为它们修复它.
有没有办法在node.js中这样做?
我知道如果你这样做的话
myTextView.setText("This is on first line \n This is on second line");
Run Code Online (Sandbox Code Playgroud)
然后它会像这样正确显示:
这是在第一行
这是在第二行
当我将该字符串存储在数据库中然后将其设置为视图时,它显示如下:
这是在第一行\n这是在第二行
这是我用来从数据库中提取字符串的代码行:
factView.setText(factsCursor.getString(MyDBAdapter.FACT_COLUMN));
Run Code Online (Sandbox Code Playgroud)
我简单地填充从一个文本文件,其中每行是一个新进入的表,这样的线路是这样的数据库"这是第一行\n这是第二行",并存储为文本.
有没有理由不正确显示\n字符?它必须与数据库中的字符串有关.有什么建议?
在JavaScript中检查字符串之间的相等性的正确方法是什么?
android ×2
autocomplete ×1
c++ ×1
content-type ×1
css ×1
git ×1
hidden ×1
html ×1
html-table ×1
javascript ×1
jquery ×1
node.js ×1
png ×1
powershell ×1
python ×1
qt ×1
queue ×1
sqlite ×1
string ×1
textview ×1