我需要将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) 我很惊讶地发现QVector3D没有内置的输出x,y和z坐标作为QString的方法.我可以写一个简单的函数来做到这一点,但我想知道是否有一个标准的方法来做到这一点?
我有一个有许多子菜单的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:我从其他示例中看到的唯一区别是,通常人们将 …
我需要解决与此相反的问题.我有QString与非ascii符号.
例如:
Schöne Grüße
如何获取UTF8大小写的字符串长度?它应该是15.
我尝试过转换ByteArray为Latin1,ASCII但是长度始终是相同的.
QStringList的对象和QStrings数组之间有什么区别?我的意思是它们似乎都表现为数组.
我已经看过其他几篇关于将QString转换为std :: string的帖子,它应该很简单.但不知怎的,我收到了一个错误.
我的代码使用cmake编译成一个VS项目(我正在使用VS express),所以QT库没有问题,我编写的GUI除了这部分之外还有用.
我有一个QComboBox cb将名称保存到某些对象,并且QLineEdit lineEdit允许我指定我要查找的对象的名称.当我按下go按钮时,它应该运行一个经过测试和工作的函数,输入来自QComboBox和lineEditas参数.
这是单击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.
有没有简单的方法来替换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)
..但它不起作用,因为我需要在其他一些字符串中使用"##",但不是在开头.
前两个字符可能会出现"%$"和"#@",这主要是我需要删除前两个字符的原因.
有任何想法吗?
我正在尝试遍历两个不同的目录.这两个目录位于同一个根目录下/.
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) 如何从/ home/admin/job0/Job中删除/ Job
QString name = "/home/admin/job0/Job"
Run Code Online (Sandbox Code Playgroud)
我想在"/"之后删除最后一个字符串