标签: qstring

QChar到wchar_t

我需要将QChar转换为wchar_t

我尝试过以下方法:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    QString mystring = "Hello World\n";
    wchar_t myArray[mystring.size()];

    for (int x=0; x<mystring.size(); x++)
    {
        myArray[x] = mystring.at(x).toLatin1();
        cout << mystring.at(x).toLatin1(); // checks the char at index x (fine)
    }

    cout << "myArray : " << myArray << "\n"; // doesn't give me correct value
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

哦,在有人建议使用.toWCharArray(wchar_t*array)函数之前,我已经尝试过了,它基本上做了与上面相同的事情,并没有按照它应该传输字符.

如果你不相信我,下面是代码:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) { …
Run Code Online (Sandbox Code Playgroud)

c++ unicode qstring qt wchar-t

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

将QVector3D输出到QString

我很惊讶地发现QVector3D没有内置的输出x,y和z坐标作为QString的方法.我可以写一个简单的函数来做到这一点,但我想知道是否有一个标准的方法来做到这一点?

c++ qstring qt

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

如何通过QSignalMapper或其他方式将QString从QMenu传递到Qt槽

我有一个有许多子菜单的QMenu.这些是动态创建的,即名称菜单来自db并在循环中创建.现在我想在单击菜单时触发相同的插槽trigger()或类似,但我需要将QString菜单名称传递给插槽,以便我可以执行特定于菜单的操作.我试过这个,即将QAction*传递给触发事件并使用setData,但我得到了运行时错误.

object :: connect:没有这样的信号QAction :: triggered(QAction*)

for(int j=0; j<channelTypes[i].getNumChannels() ; j++){
        QAction *subMenuAct = subMenu->addAction(tr(c_name)); // c_name the menu name
        subMenuAct->setData(ch_name);
        connect(subMenuAct, SIGNAL(triggered(QAction *)), this, SLOT(playChannel(QAction *))); // playChannel is the slot
}

void <ClassName>::playChannel(QAction *channelAction)
{
     QString str = channelAction->data().toString();
    qDebug() << "Selected - " << str;
}
Run Code Online (Sandbox Code Playgroud)

或者,我也尝试过QSignalMapper,其中signalMapper是在构造函数中初始化的数据成员

signalMapper = new QSignalMapper(this);
Run Code Online (Sandbox Code Playgroud)

for(int j=0; j<channelTypes[i].getNumChannels() ; j++){
       QAction *subMenuAct = subMenu->addAction(tr(c_name));

       connect(subMenuAct, SIGNAL(triggered()), signalMapper, SLOT(map()));
       signalMapper->setMapping(subMenu, ch_name);
       connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(playChannel(QString)));
}
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我没有得到任何错误,但是没有调用插槽函数playChannel.如果有人能帮助解决问题,我将非常感激.

更新1:我从其他示例中看到的唯一区别是,通常人们将 …

c++ qstring qt4 qmenu qt-signals

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

以字节为单位获取QString长度(不是字符)

我需要解决与相反的问题.我有QString与非ascii符号.
例如:
Schöne Grüße

如何获取UTF8大小写的字符串长度?它应该是15.
我尝试过转换ByteArrayLatin1,ASCII但是长度始终是相同的.

size qstring qt text codec

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

QString []和QStringList之间有什么区别

QStringList的对象和QStrings数组之间有什么区别?我的意思是它们似乎都表现为数组.

c++ arrays qstring qt qtcore

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

将QString转换为std :: string

我已经看过其他几篇关于将QString转换为std :: string的帖子,它应该很简单.但不知怎的,我收到了一个错误.

我的代码使用cmake编译成一个VS项目(我正在使用VS express),所以QT库没有问题,我编写的GUI除了这部分之外还有用.

我有一个QComboBox cb将名称保存到某些对象,并且QLineEdit lineEdit允许我指定我要查找的对象的名称.当我按下go按钮时,它应该运行一个经过测试和工作的函数,输入来自QComboBoxlineEditas参数.

这是单击go按钮时的代码:

void gui::on_go_clicked(){
    std::string str(cb->currentText().toStdString());
    //std::cout << str << "\n";
    //QString qstr = lineEdit->text();
    //std::cout<<lineEdit->text().toStdString();
    updateDB(str, lineEdit->text().toStdString());
}
Run Code Online (Sandbox Code Playgroud)

第一行,创建str,工作正常.IE库函数或没有问题toStdString().但是当它执行我的函数时,程序会中断,并且它不是因为函数,它是因为它试图转换的部分lineEdit->text().toStdString().

这只是当我在lineEdit框中写下"测试"一词时.我已经看到了其他关于unicode的答案,我曾经简单地尝试过,但我可以假设用户不会在lineEdit框中添加任何特殊字符,除非"_"和".",它们不应该是unicode.

c++ qstring qt stdstring

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

QString仅替换第一次出现

有没有简单的方法来替换QString中其他子字符串的第一次出现的某些子字符串?它可以在任何位置.

c++ qstring qt qtcore

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

如何删除QString的前两个字符

我如何删除QString的前两个字符,或者如果我必须将它放在StackOverflows外行的条款中:

QString str = "##Name" //output: ##Name
Run Code Online (Sandbox Code Playgroud)

output: Name
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经使用了这段小代码:

if(str.contains("##"))
{
    str.replace("##","");
}
Run Code Online (Sandbox Code Playgroud)

..但它不起作用,因为我需要在其他一些字符串中使用"##",但不是在开头.

前两个字符可能会出现"%$""#@",这主要是我需要删除前两个字符的原因.

有任何想法吗?

c++ qstring qt replace

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

如何遍历QStringList

我正在尝试遍历两个不同的目录.这两个目录位于同一个根目录下/.

void MainWindow::loadPlugins()
{
    pluginsDir = QDir(qApp -> applicationDirPath());

#if defined(Q_OS_WIN)
    if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
        pluginsDir.cdUp();
#elif defined(Q_OS_MAC)
    if (pluginsDir.dirName() == "MacOS") {
        pluginsDir.cdUp();
        pluginsDir.cdUp();
        pluginsDir.cdUp();
    }
#endif

    QStringList dirs;
    dirs << "plugins" << "core_plugs";

    QList<QObject *> loadedPlugs;

    for (int i = 0; i < dirs.size(); ++i)
    {
        cout << dirs.at(i).toLocal8Bit().constData() << endl;

        pluginsDir.cd(dirs.at(i).toLocal8Bit().constData());

        foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
            QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
            QObject *plugin = loader.instance();
            qDebug() << "NAME :: " << fileName;
            if (plugin …
Run Code Online (Sandbox Code Playgroud)

c++ iteration qstring qt qlist

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

QString删除最后一个字符

如何从/ home/admin/job0/Job中删除/ Job

QString name = "/home/admin/job0/Job"
Run Code Online (Sandbox Code Playgroud)

我想在"/"之后删除最后一个字符串

qstring qt

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

标签 统计

qstring ×10

qt ×9

c++ ×8

qtcore ×2

arrays ×1

codec ×1

iteration ×1

qlist ×1

qmenu ×1

qt-signals ×1

qt4 ×1

replace ×1

size ×1

stdstring ×1

text ×1

unicode ×1

wchar-t ×1