我有一个不可复制的类(即复制构造函数和赋值运算符被标记为'delete').我想将它们保存在std :: vector中.
它是一个RAII类,所以简单地存储指针或引用它不是我想要的.
我对新的初始化列表和移动构造函数的了解有限,这可能吗?
我没有做很多Qt编程所以这可能听起来像一个愚蠢的问题,但qt4中的QListViewItem发生了什么?
我有一段时间以前在qt3写的这个应用程序.我使用恰当的名称"qt3toqt4"程序(在Fedora平台上的所有这些)将其更改为qt4.
在内部,它似乎将许多类从QClass更改为Q3Class(可能提供某种向后兼容性),然后使用qt4进行编译.我今天遇到了一些问题(从QProcess读取stdout,但除此之外)我决定简单地在qt4中重写应用程序.
现在问题 - 我使用QListView,并在此结构中添加QListViewItems的负载.像这样的东西:

但这在qt4中似乎不再可用.而且我找不到任何提供此行为的示例.有没有办法在qt4中这样做?为了使它更复杂 - 我使用了我自己的QListViewItems(派生自QListViewItem)......
如果我正确地执行以下操作,任何人都可以看看.我有一个有progressdialog的片段,我需要它在一个方向开关上工作.我目前这样做:
// I am using the compat libraries
import android.support.v4.app.DialogFragment;
public class ProgressDialogFragment extends DialogFragment {
private ProgressDialog mProgressDialog = null;
private int mMax = 100;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, 0);
setRetainInstance(true);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Title");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(true);
mProgressDialog.setProgress(0);
mProgressDialog.setMax(mMax);
mProgressDialog.setCanceledOnTouchOutside(false);
return mProgressDialog;
}
// there seems to be a bug in the compat library - if I don't do the following - the dialog is not show …Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题.我可以通过以下小样本代码复制问题:
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <iostream>
void printSSLErrors()
{
int l_err = ERR_get_error();
while(l_err!=0)
{
std::cout << "SSL ERROR: " << ERR_error_string(l_err, NULL) << std::endl;
l_err = ERR_get_error();
}
}
int main(int argc, char* argv[]) {
SSL_library_init();
SSL_load_error_strings();
// context
SSL_CTX* mp_ctx;
if(!(mp_ctx = SSL_CTX_new(SSLv23_server_method())))
{
printSSLErrors();
return 0;
}
std::cout << "CTX created OK" << std::endl;
// set certificate and private key
if(SSL_CTX_use_certificate_file(mp_ctx, argv[1], SSL_FILETYPE_PEM)!=1)
{
printSSLErrors();
return 0;
}
std::cout << "Certificate intialised OK" << std::endl;
if(SSL_CTX_use_PrivateKey_file(mp_ctx, …Run Code Online (Sandbox Code Playgroud) 我JPanel在一个JFrame. 其中一个面板包含一个JTextArea. 目前我这样创建:
JTextArea = new JTextArea(5, 40);
Run Code Online (Sandbox Code Playgroud)
这给了我一个 5 行乘(大约)40 列的文本区域。
这在垂直方向上按我的意愿工作,该区域填充了父容器的整个高度 - 可能是因为父容器是该行中唯一的元素。
水平方向上,父宽度由下面的元素决定,并且它(通常)比实际宽JTextArea。所以我最终得到了一个两边都有大边距的文本区域。更糟糕的是,当我将框架缩小到文本区域与父容器的宽度完全相同时,它突然“轻弹”并变为 1 行高的文本区域,然后是父容器的宽度.
请原谅下面的粗略图,它希望能说明这个问题。
简而言之:如何创建一个JTextArea始终填满可用空间的最大空间?(如果可能的话,如果用户将框架调整得更小,则出现滚动条的最小宽度)
我在清单中指定了一个接收器,如此...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.MyProject"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher" android:enabled="true">
<service android:name="MyService"
android:exported="true"
android:process=":different"
android:enabled="true">
<intent-filter>
<action android:name="com.me.MyService">
</action>
</intent-filter>
</service>
<receiver android:exported="true"
android:name="MySMSBroadcastReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
如果我在Android Froyo设备(模拟器或真实设备)上进行测试,这可以正常工作.当设备收到SMS时,将调用MySMSBroadcastReceiver.onReceive(...).
但是,如果我在4.0或4.1设备(模拟器或真实设备)上安装它,则传入的消息不会发生任何变化.没有错误,没有任何错误.我还更改了项目的属性以专门定位4.0或4.1设备并重新安装它,但这没有任何区别.
这不是一个问题,但我试图找到一个正确的方法来做到这一点.
我有以下情况:
public class SettingsDialogFragment extends DialogFragment implements OnCheckedChangeListener {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.settings, container);
...
CheckBox lBox1 = (CheckBox)view.findViewById(R.id.checkBox1);
lBox1.setOnCheckedChangeListener(this);
lBox1.setChecked(true);
return view;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
....
}
Run Code Online (Sandbox Code Playgroud)
我setChecked(true)遇到的"问题"是,通过调用onCheckChanged将会触发.我想当我给布局充气时 - CheckBox用错误的设置进行初始化,然后我将其更改为true确实是一个CheckedChanged事件.
我当然可以在设置初始值后改变顺序并分配监听器,但有没有办法给布局充气,同时以某种方式传递各种组件的初始值?它们是动态的,因此我无法将值修复为settings.xml中的特定值
干杯
如果我有一个包含 DATETIME 列的表,我可以插入格式如下的日期:
2015-03-25 10:10:10
2015-03-25 10:10
2015-03-25 10
2015-03-25
Run Code Online (Sandbox Code Playgroud)
它将用零填充余数。但我不能使用
2015-03
2015
Run Code Online (Sandbox Code Playgroud)
因为它会给出“日期时间值不正确”错误。然而,可以在 SELECT 中使用最后两个,例如[..] WHERE timestamp < '2015-03'..
如果在日期时间中省略,MySQL 是否可以用 01-01 来填充日期时间的其余部分,或者我必须自己手动执行此操作?
即我想在 INSERT 语句中使用“2015-03”,或者执行类似的操作SELECT DATE_FORMAT('2015-03', '%Y%m%dT%H%i%S')
我今天早些时候偶然发现了这个"问题".
我有这个类,它包含一个转换运算符.就像是:
class myClass {
public:
...
operator anotherClass*() { return anotherClassPtr; }
...
}
Run Code Online (Sandbox Code Playgroud)
现在这一切都很好..直到我犯了这个愚蠢的错误:
void yetAnotherClass::foo(myClass* _p_class)
{
...
anotherClass* lp_anotherClass = (anotherClass*)_p_class;
...
}
Run Code Online (Sandbox Code Playgroud)
我花了很长时间才弄清楚为什么lp_AnotherClass ptr被设置为非零而我确信_p_class中的anotherClassPtr为0.
有没有什么我可以添加到myClass会阻止我犯这个错误?(即编译器会吐出一些错误)是否有可能阻止对象ptr被强制转换为其他东西?
我有一组对象(介于1和大约500之间).每个对象与同一组中的某些(零个或多个)其他对象兼容.
任何人都可以给我一些指示,如何确定创建彼此兼容的对象对的最佳方法,以便集合中的大多数对象配对?