小编Dig*_*til的帖子

如何在Python中将字符转换为整数,反之亦然?

我想得到一个角色,它的ASCII价值.

例如,对于角色a,我想得到97,反之亦然.

python integer type-conversion char

275
推荐指数
3
解决办法
42万
查看次数

如何阻止回车键关闭我的QDialog(Qt 4.8.1)

我有QDialog一个QDialogButtonBox." 确定"和" 取消"按钮处于活动状 有时我会根据对话框的状态禁用或隐藏"确定"按钮.看来,无论我做什么,Enter键总是激活OK按钮.我真的不希望这种情况发生.我试过了:

  • 每次显示/隐藏/启用/禁用/无论按钮时,都将default和autoDefault属性设置为false
  • 在OK按钮上安装事件过滤器,以拦截返回,输入和空格的键事件(按下和释放)
  • 将按钮上的焦点策略设置为NoFocus

并且通过上述所有组合,Enter键仍然接受对话框.有没有人知道如何阻止这个?看起来我应该能够阻止这么简单的事情吗?

c++ qt qdialog qpushbutton

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

如何覆盖C++中的删除行为?

我遇到的问题是,据我所知,删除操作符应该是一个静态函数,但有时编译器(VC++)似乎将它视为动态.

鉴于:

class Base
{
public:
  void* operator new(size_t size) { /* allocate from custom heap */ }
  void operator delete(void *p) { customFree(p, sizeof(Base)); }

  Base() {}
  virtual ~Base() {}
};

class Derived: public Base
{
public:
  void* operator new(size_t size) { /* allocate from custom heap */ }
  void operator delete(void *p) { customFree(p, sizeof(Derived)); }

  Derived() {}
  virtual ~Derived() {}
}
Run Code Online (Sandbox Code Playgroud)

我看到的是删除基指针将导致调用Derived::opeator删除.

Base *p = new Derived();
delete p; //calls Derived::operator delete
Run Code Online (Sandbox Code Playgroud)

如果我没有定义任何析构函数,那么我得到了我预期的结果:调用Base …

c++ memory

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

如何从左上角到右边填充QGridLayout?

我想填充QGridLayoutQWidgets.在QWidgets需要出现在左上至右上的方式,并继续向下填补了下来每一行充满后QWidgets.类似且熟悉的GUI的一个例子是Apple如何在iPhone或iPad的主屏幕上对其应用程序进行分类.应用程序从左上角到右上角,并在每行填充后继续向下移动.

现在,每当我添加元素时,它们都会占据整个屏幕和/或不会彼此相邻添加.

这是我正在做的示例代码

m_gridLayout = new QGridLayout(this);
this->setLayout(m_gridLayout);
m_gridLayout->addWidget(widgetToBeAdded, m_currentRow, m_currentColumn, Qt::AlignLeft);
Run Code Online (Sandbox Code Playgroud)

我按预期继续更新m_currentColumn和m_currentRow.在一定数量的列之后,我告诉它改为下一行,没有任何反应.我已通过调试确认它实际上正在吐出正确的行和列.)

最后,我需要抛出一个,QScrollArea以便可以向下滚动网格.

每个的大小都是QWidget一样的.如果我能够在正确分类网格方面获得任何帮助,我们将不胜感激.

编辑:使用下面的答案,我设法让我的项目按正确的顺序排序.但是,在垂直方向上的所有元素之间存在大量空间.正如我想的那样,改变verticalSpacing属性并不能避免这种情况.有谁知道怎么办?

user-interface qt grid-layout qwidget qgridlayout

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

使用QProcess启动流程

我正在尝试使用QProcess以下方式启动Microsoft Word :

QString program = "WINWORD.EXE";
process->start(program);
Run Code Online (Sandbox Code Playgroud)

但没有任何反应. winword.exe在路径上(所以当我输入winword.exe字时会打开).这是正确的方法吗?

qt qprocess

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

如何从 QListWidgetItem 获取小部件

我做了一个QListWidget. 在 中QLisitWidgetItems,我添加了一个QVBoxLayout. 那QVBoxLayout包含三个QLabels. QLabel单击时如何获取内部值QListWidgetItem

//创建列表视图项(三个QLabels)

Lblnames::Lblnames(QString strid,QString strname,QString strmob,QWidget *parent)
        : QWidget(parent)
    {
        QLabel *lblid=new QLabel(strid);
        QLabel *lblname=new QLabel(strname);
        QLabel *lblnumber=new QLabel(strmob);

        lblid->setFont(QFont("Times", 1));
        lblname->setFont(QFont("Times", 12, QFont::Bold));

        lblid->hide();

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lblid);
    layout->addWidget(lblname);
    layout->addWidget(lblnumber);
    setLayout(layout);
}
Run Code Online (Sandbox Code Playgroud)

//创建列表

listWidget=new QListWidget();
    for(int i=0;qry.next();i++)
    {
        qDebug()<<QString("%1").arg( qry.value(1).toString());
        Lblnames *lblnames = new Lblnames(QString("%1").arg( qry.value(0).toString()),QString("%1").arg( qry.value(1).toString()),QString("%1").arg( qry.value(2).toString()));
        item = new QListWidgetItem();
        item->setSizeHint(QSize(0,60));
        item->setFont(QFont("Arial", 1));
        listWidget->addItem(item);
        listWidget->setItemWidget(item,lblnames);

        }
Run Code Online (Sandbox Code Playgroud)

qt4

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

防止 QWidget 失去焦点

我想写一个QDialog相似的类。我已经成功地很好地过滤了非对话框小部件的鼠标事件,但我仍然有焦点问题。由于QDialog相似的类只是一个常见的小部件,它可能会通过按键(选项卡)而失去焦点。因此,与 Lookalive 无关的小部件QDialog(我无法单击但可聚焦)可能会获得焦点。有没有一种巧妙的方法来防止用户将注意力从我的对话框相似的子小部件上移开?

c++ qt

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

在 Windows 批处理文件中运行 bash 命令

是否可以在批处理脚本中运行msys bash 命令?假设我有一个.bat文件,其中有 Windows 批处理命令,并且在一行中我将切换到msys bash 来处理msys指定的命令。就像这样:

[...] 
batch commands 
[...]
C:\mingw\msys\1.0\bin\sh -l
mount 'C:\mingw\local32' /local32
[...] 
bash commands 
[...]
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

jb_

bash shell cmd batch-file sh

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

递归函数参数中前后递减的区别

我有以下示例代码,其中我使用预先减少

void function(int c)
{
  if(c == 0)
  {
     return;
  }
  else
  {
    cout << "DP" << c << endl;
    function(--c);
    cout << c << endl;
    return;
  }
}
Run Code Online (Sandbox Code Playgroud)

此函数为输入4提供输出:

 DP3
 DP2
 DP1
 DP0
 0
 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

但是当我使用后减量时

void function(int c)
{
  if(c == 0)
  {
    return;
  }
  else
  {
    cout << "DP" << c << endl;
    function(c--);
    cout << c << endl;
    return;
  }
}
Run Code Online (Sandbox Code Playgroud)

输出与DP4无限循环

你能详细解释一下为什么会这样吗?

c++ recursion pre-increment post-increment

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

全局变量未在python中更新

我有3个文件。

全局变量

global m_pTest
m_pTest = None
Run Code Online (Sandbox Code Playgroud)

一文件

import globalVar
import fileTwo

m_pTest = Class.getOutput() # Value is assigne
fileTwo.fun()
#Do anything
Run Code Online (Sandbox Code Playgroud)

文件二.py

 import globalVar

 def fun():
    intVal = m_pTest.getInt()   # int value from m_pTest object
    print intVal
Run Code Online (Sandbox Code Playgroud)

这是我运行时的简短程序示例,它在 fun() 中的 fileTwo.py 中出错

 AttributeError: 'NoneType' object has no attribute 'getInt'
Run Code Online (Sandbox Code Playgroud)

有人可以解释这段代码有什么问题吗?谢谢!

python global-variables

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

"extern"关键字用法

我有以下代码片段:

 #include<iostream>

 int main()
 {
     extern int a;
     printf("a = %d", a)
 }
 int a = 10;
Run Code Online (Sandbox Code Playgroud)

上面的示例代码打印10.我的猜测是应该打印垃圾值.有人可以解释一下吗?

c++ extern

0
推荐指数
1
解决办法
79
查看次数

在C++中调用数组时删除操作员行为?

我有以下代码行.

代码示例1

char * arr = new char[10];
arr++;
delete arr;
Run Code Online (Sandbox Code Playgroud)

代码示例2

char * arr = new char[10];
delete arr;
Run Code Online (Sandbox Code Playgroud)

我有两个示例代码.代码示例1在删除时崩溃,而代码示例2工作正常.arr ++只有一个区别.这两个代码示例究竟发生了什么.谁能解释一下?

c++ visual-c++

0
推荐指数
1
解决办法
64
查看次数